8768 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

JENCAL a écrit :
lol
je parle du message qui part (le mail quoi)

tu as mis :
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";


Ok, mais c'est dans le $headers, donc après $messages.
Un <br /> ne fonctionnerait pas.
A moins de mettre ça dans $message?
Modérateur
Effectivement, le header Content-type définit la nature du contenu de ton mail (dans $message), pour que le logiciel qui le lit sache comment le traiter:

si tu mets Content-type: text/plain, ce sera du texte brut et il faut utiliser les retour à la ligne "\r\n"
si tu mets Content-type: text/html, ce sera du HTML et il faudra utiliser les "<br>".

(D'autres options existent mais ça deviendrait compliqué)

Idéalement, on préfère le texte brut si on n'a pas besoin de mise en page plus avancée. Le HTML par contre te permettra d'utiliser les titres (h1, h2..), les paragraphes et autres options.
Modifié par kustolovic (14 Sep 2016 - 17:42)
abeille a écrit :


Ok, mais c'est dans le $headers, donc après $messages.
Un &lt;br /&gt; ne fonctionnerait pas.
A moins de mettre ça dans $message?


par définition le header c'est l'en tête.
Donc le header n'est pas "après" ou "avant" le message. L'en-tête c'est ce qui "définit" les spécifications du message.
Vu que tu as spécifié dans l'en tête le content type en html, la balise br doit marcher

Je te renvoie aux conseils de kustolovic
Modifié par JENCAL (14 Sep 2016 - 17:49)
Ok, mais je la place où cette balise <br />
parce que ici, ça ne va pas!
(ne riez pas!)
$_SESSION['succes']=1;
		$message = " ";
		$message .= "Message de ".$_POST['nom']."\r\n"<br />;
		$message .= "Mail: ".$_POST['email']."\r\n" <br />;
		$message .= "le ".date("d/m/Y - H:i")."\r\n";
		$message .= "=============================================== "."\r\n";
		$message .= $_POST['message']."\r\n";
		$message .= "================================================"."\r\n";
		
		$headers  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";	
		$headers .= 'From: '.$nom.'<'.$email.'>'."\r\n\r\n"; 
		
		mail('lanorey@hotmail.fr','commentaire de mon site', $message, $headers);
		header('Location: contact_eu.php');


Ce serait peut être plus simple en restant en texte brut non?
Modifié par abeille (14 Sep 2016 - 18:08)
mais non, la balise <br> fait partie du message lol


$message .= "Mail: ".$_POST['email']."\r\n" <br />;

devient
$message .= "Mail: ".$_POST['email']."<br />" ;
Et voila, comme d'habitude, Jencal a encore fait fort.
Merci, donc ça fonctionne parfaitement.
Enfin.

Mais j'ai pas encore fini!
Une dernière petite question:
pourquoi lorsque j'envoie un commentaire sur mon site, avec ma propre adresse mail, celui ci n'arrive pas?
Modérateur
C'est probablement parce que Microsoft considère ce mail comme une contrefaçon. Car le serveur d'envoi n'est pas habilité à envoyer des e-mails au nom de hotmail.fr

Par ailleurs d'autres expéditeurs pourraient subir le même sort.

Pour contourner le problème, il faudrait utiliser dans le champ From: une adresse que tu possèdes et qui est validée sur ton serveur: dans le genre no-reply@mondomaine.com. On configure ensuite une entrée SPF dans le DNS pour relier l'envoi d'e-mail de cette adresse à ton serveur. (Il existe une autre méthode, DKIM, mais plus difficile à mettre en œuvre)

Si tout cela t'apparaît être du chinois, il est aussi possible que ton hébergeur ait une procédure facilitée pour tout cela. (cela se fait de plus en plus)
kustolovic a écrit :
C'est probablement parce que Microsoft considère ce mail comme une contrefaçon. Car le serveur d'envoi n'est pas habilité à envoyer des e-mails au nom de hotmail.fr

Par ailleurs d'autres expéditeurs pourraient subir le même sort.

Pour contourner le problème, il faudrait utiliser dans le champ From: une adresse que tu possèdes et qui est validée sur ton serveur: dans le genre no-reply@mondomaine.com. On configure ensuite une entrée SPF dans le DNS pour relier l'envoi d'e-mail de cette adresse à ton serveur. (Il existe une autre méthode, DKIM, mais plus difficile à mettre en œuvre)

Si tout cela t'apparaît être du chinois, il est aussi possible que ton hébergeur ait une procédure facilitée pour tout cela. (cela se fait de plus en plus)
Ok, merci pour l'info.
On va faire plus simple: je n'envoie pas de messages avec mon adresse mail pour tester. Ou sur une autre adresse.

Voila, c'est réglé.
Merci à tous pour votre aide.
Modérateur
abeille a écrit :
On va faire plus simple: je n'envoie pas de messages avec mon adresse mail pour tester. Ou sur une autre

C'est réglé pour ton adresse, mais pas celle de ceux qui utiliseront ton site. Quitte à ne pas mettre de SPF, mais au moins dans le From: une adresse que tu es sûr qu'elle passe.
kustolovic a écrit :

C'est réglé pour ton adresse, mais pas celle de ceux qui utiliseront ton site. Quitte à ne pas mettre de SPF, mais au moins dans le From: une adresse que tu es sûr qu'elle passe.
Mon adresse mail normale passe très bien.
C'est juste quand depuis le site, j'envoie un message avec mon adresse mail. Ce qui est inutile bien entendu!
Modérateur

$headers = 'From: ' .$_POST['nom']. "\r\n" .

Le truc c'est que tu ne peux pas savoir si l'adresse qu'emploieront les gens qui utilisent ton formulaire passe Smiley smile
kustolovic a écrit :

$headers = 'From: ' .$_POST['nom']. "\r\n" .

Le truc c'est que tu ne peux pas savoir si l'adresse qu'emploieront les gens qui utilisent ton formulaire passe Smiley smile
OUi, et j'ai besoin de cette adresse pour leur répondre!
Pages :