Heu… je développe avec le framework Symfony2 (il y a un cours sur openclassrooms également). Cependant, c’est un tout autre niveau que ce que tu fais. Mais par là, je voulais te dire qu’il y a peut-être des modules qui existent également, mais tu devras faire tes propres recherches.
J’ai récupéré un vieux code pour envoyer un mail (cf. fin de message). Mais en le comparant au tiens et celui du tuto, je pense pour le moment que le problème vient de ton champ From
ne répond pas à la norme (email|"nom" <email>)
. (cf. https://en.wikipedia.org/wiki/Email#Header_fields, un exemple dans la version française https://fr.wikipedia.org/wiki/Courrier_électronique#Exemple_de_contenu_brut_d.27un_courrier_.C3.A9lectronique).
Je te conseille donc de remplacer :
$headers = 'From: ' . $_POST['prenom'] . ' ' . $_POST['nom'] . "\r\n" .
'Reply-To: ' . $_POST['email'];
Par :
$headers = 'From: "' . $_POST['prenom'] . ' ' . $_POST['nom'] . '" <' . $_POST['email'] . '>' . "\r\n" .
'Reply-To: ' . $_POST['email'];
Essaye ainsi, et dis-nous le résultat.
Sinon, évite d’indiquer des adresses email dans tes codes (champ $to
) ou tout information sensible quand tu postes sur internet.
Mon code, inspiré du tutoriel et un peu nettoyé (désolé, je ne sais pas où sont les couleurs) :
function action() {
$name = isset($_POST['name']) ? $_POST['name'] : null;
//other fields
if (/* checking */) {
// +error messages
} else {
$to = '[email protected]';
$rn = preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $to) ? "\n" : "\r\n";
$text = // message en texte brut
$html = // message en HTML
$boundary = '-----=' . md5(rand());
// Format = "nom" <email>
$header = 'From: "' . $name . '"<' . $email . '>' . $rn;
$header.= 'Reply-to: "' . $name . '"<' . $email . '>' . $rn;
$header.= 'MIME-Version: 1.0' . $rn;
$header.= 'Content-Type: multipart/alternative;' . $rn . ' boundary="' . $boundary . '"' . $rn;
$content = $rn . '--' . $boundary . $rn;
$content.= 'Content-Type: text/plain; charset="UTF-8"' . $rn;
$content.= 'Content-Transfer-Encoding: 8bit' . $rn;
$content.= $rn . $text . $rn;
$content.= $rn . '--' . $boundary . $rn;
$content.= 'Content-Type: text/html; charset="UTF-8"' . $rn;
$content.= 'Content-Transfer-Encoding: 8bit' . $rn;
$content.= $rn . $html . $rn;
$content.= $rn . '--' . $boundary . '--' . $rn;
$content.= $rn . '--' . $boundary . '--' . $rn;
mail($to, $title, $content, $header);
}
}