Problème d'entête avec la fonction mail()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'entête avec la fonction mail()

par VaN » 30 janv. 2008, 17:37

non, toujours pas : /

par h0_noMan » 30 janv. 2008, 17:23

Content-type avec un T majuscule.

Content-Type

par VaN » 30 janv. 2008, 16:04

up de ce topic, car je n'ai toujours pas reussi à résoudre ce probleme. Peut etre que quelqu'un verra d'où il vient.

par VaN » 28 janv. 2008, 16:42

Toujours pas de mail envoyé, et donc toujours le message d'echec. je n'y comprend vraiment rien.

par h0_noMan » 28 janv. 2008, 16:31

Enleves le dernier \r\n de ton entete

par VaN » 28 janv. 2008, 16:28

la source affichait bien le mail entre < >.

un nl2br(htmlentities($entete)); affiche donc :
MIME-Version: 1.0
Content-type: text/html; charset="UTF-8"
From: <[email protected]>
Erreur lors de l'envoi de l'e-mail. Contactez l'administrateur.
Mais le mail ne passe toujours pas.

par h0_noMan » 28 janv. 2008, 16:21

C'est normal.

Regardes dans le code source de la page pour voir le texte entre < > ou modifie ton echo comme ceci :
echo nl2br(htmlentities($entete)); 

par VaN » 28 janv. 2008, 16:12

Ne fonctionne pas mieux. Le From ne passe pas, un
echo $entete;
m'afiche
MIME-Version: 1.0 Content-type: text/html; charset="UTF-8" From:
Erreur lors de l'envoi de l'e-mail. Contactez l'administrateur.

par h0_noMan » 28 janv. 2008, 16:03

Testes comme ceci :
$entete .= 'From: <no-reply@'.$site_domain.">\r\n"; 

Problème d'entête avec la fonction mail()

par VaN » 28 janv. 2008, 15:43

Bonjour,

je n'avais jamais rencontré ce problème avant.
J'utilise la fonction mail(), mais il y'a un problème, le mail() ne s'envoie pas.

Voici ma fonction :
function sendMail($to, $sujet, $message) {
	require 'vars.php';
	
	$entete = 'MIME-Version: 1.0'."\r\n";
	$entete .= 'Content-type: text/html; charset="UTF-8"'."\r\n";
	$entete .= 'From: no-reply@'.$site_domain."\r\n";
	
	echo $entete;
	
	// ajout du footer au mail
	$message .= "Cordialement,<br />\n";					
	$message .= "L'&eacute;quipe ".$site_name;
	
	//echo $message;
	
	//mail($to, $sujet, $message);
	
	if(!mail($to, $sujet, $message, $entete)) {
		echo '<div class="error_msg">Erreur lors de l\'envoi de l\'e-mail. 
		<a href="mailto:'.$admin_mail.'" class="normal-brown-underline">Contactez l\'administrateur</a>.</div>';
	}
	else
		echo '<span id="yes-msg">L\'e-mail vient d\'&ecirc;tre envoy&eacute;.</span>';
	
}
J'ai réussi à localiser précisement le problème, il vient de cette ligne :
$entete .= 'From: no-reply@'.$site_domain."\r\n";
Lorsque je la supprime, le mail est envoyé. Lorsque je la remet, le mail ne passe pas. Quelqu'un saurait'il pourquoi ?

je précise que la variable $site_domain est connue de la fonction. Un
echo $entete;
m'affiche un mail correct, dans la partie From du header.