[RESOLU] Envoi de mail par formulaire ne fonctionne pas.

Petit nouveau ! | 3 Messages

11 août 2016, 23:52

Bonjour à tous,

J'ai un problème qui ressemble à un problème de débutant. Pourtant, j'ai beau chercher, je n'arrive pas à voir d'où vient l'erreur... Je précise que je ne suis pas un expert en PHP, mais je pense que mon problème, que je vous expose plus loin, est dû à un problème avec ce langage mais je peux me tromper. C'est pourquoi je poste ma question dans la rubique débutant.

En fait, j'ai un formulaire, et un script qui récupère les variables des champs pour envoyer un email. C'est un bête formulaire de contact comme il y en a un peu partout. Ce script fonctionnait très bien sur un site personnel hébergé chez free.

Voici le script en question:
<?php
$ip = getenv("REMOTE_ADDR");
$agent = getenv("HTTP_USER_AGENT");
$aujourdhui = date("d/m/Y	H:i:s");
$contents = $ip . "\r\n" . $aujourdhui . "\r\n" . $agent;
$to = 'contact' . '@' . 'monsite.com';
$email = $_POST['email'];
$sujet = '[monsite] ' . $_POST['subject'];
$message = $_POST['body'] . "\r\n\r\n" . "--\r\n" . $contents;
$headers = 'From: ' . $email . "\r\n" .
   'Reply-To: ' . $email . "\r\n" .
   'X-Mailer: PHP/' . phpversion();
$strippedmessage = stripslashes( $message );
$sujet2 = stripslashes( $sujet );

if ( mail( $to, $sujet2, $strippedmessage, $headers ) ) {
	header("location: ../envoi-correct.html");
else {
	header("location: ../erreur-envoi.html");
?>
Et voici ce que j'obtiens comme email:

Code : Tout sélectionner

Subject: [monsite] essai de sujet From: [email protected] Reply-To: [email protected] X-Mailer: PHP/4.4.3-dev Date: Wed, 10 Aug 2016 20:32:14 To: [email protected] Message-Id: <[email protected]> essai de message -- xxx.yyy.zzz.ttt 10/08/2016 22:21:27 Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Or, dernièrement, j'ai créé un autre site chez un autre hébergeur mais je pense que le problème ne vient pas de l'hébergeur. Et là, le même script ne m'envoie plus d'emails... Par contre, le passage des variables du formulaire au script se fait correctement.

Voilà le morceau de code qui me fait dire ça:

Code : Tout sélectionner

echo '$to = ' . $to . "\r\n"; echo '$sujet2 = ' . $sujet2 . "\r\n"; echo '$strippedmessage = ' . $strippedmessage . "\r\n"; echo '$headers = ' . $headers . "\r\n";
Et voila ce que j'obtiens en sortie (je précise que le résultat est une page html sur une seule ligne. Les retours chariot ne sont pas pris en compte pour une raison que je ne connais pas encore. Dans un éditeur, les retours chariot sont pris en compte):

Code : Tout sélectionner

<html><head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body>$to = [email protected] $sujet2 = [monsite] Ceci est le sujet $strippedmessage = Et ceci est le message -- xxx.yyy.zzz.ttt 10/08/2016 21:57:44 Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0 $headers = From: [email protected] Reply-To: [email protected] X-Mailer: PHP/7.0.4-7ubuntu2 </body></html>
Ca ne vient pas non plus de mon nouveau hébergeur car quand je fais ce qui suit chez cet hébergeur, l'email est bien envoyé. Voici le morceau de code qui me fait dire ça:
<?php
$to = '[email protected]';
$sujet = 'Essai de messagerie';
$message = 'Ceci est le texte de mon message';
$headers = 'From: [email protected]'."\r\n" .
   'Reply-To: [email protected]'."\r\n" .
   'X-Mailer: PHP/' . phpversion();
if ( mail( $to, $sujet, $message, $headers ) ) {
	echo( "cool" );}
else {
	echo( "shit" );}
?>
Dans ce cas, je reçois l'email en question à [email protected]. Ca fonctionne! Je n'y comprends plus rien... Est-ce que quelqu'un voit d'où peut venir le problème?

Je vous remercie d'avance et je m'excuse pour le cas où ma question serait triviale.

Mammouth du PHP | 2703 Messages

12 août 2016, 00:04

c'est souvent un problème d'email considéré comme du spam.
à partir du dernier code qui fonctionne, il faut petit à petit ajouter ce qui diffère pour voir à partir de quand cela ne passe plus.

Petit nouveau ! | 3 Messages

12 août 2016, 00:58

Merci pour ce conseil. Je vais attendre un peu avant de le mettre en pratique pour voir ce qu'en pensent d'autres personnes. Mais en tout cas ça me rassure de voir que ce n'est pas un problème venant de mon code.... Merci de m'avoir répondu!

Petit nouveau ! | 3 Messages

12 août 2016, 03:05

Problème résolu! C'était bien un anti-spam de mon hébergeur. Quand je rentre un destinataire en .fr ça marche... Ce n'était donc pas un problème dû à PHP.