Problème avec la fonction MAIL
Posté : 09 sept. 2011, 16:17
Bonjour,
Lorsque j'envoie un mail avec PHP, j'ai trois erreurs à la réception :
- les boundary permetant de délimiter le texte sont visibles dans le mail reçu.
- les balises html ne sont pas interprétées
- les mails sont reçus en tant que spam
Voici le code :
Lorsque j'envoie un mail avec PHP, j'ai trois erreurs à la réception :
- les boundary permetant de délimiter le texte sont visibles dans le mail reçu.
- les balises html ne sont pas interprétées
- les mails sont reçus en tant que spam
Voici le code :
// fonction message (format html)
function message_mail_html($message_html)
{
// initialisation
$message = "";
// retour à la ligne
$passage_ligne = "\r\n";
// boundary utile pour le content type
$boundary = "-----=".md5(rand());
// MESSAGE DU MAIL
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message .= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message .= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
return $message;
}
//fonction header
function header_mail($mail, $nom)
{
// initialisation
$passage_ligne = "";
$exp = "";
$ret = "";
$mime = "";
$content = "";
$header = "";
// retour à la ligne
$passage_ligne = "\r\n";
// boundary utile pour le content type
$boundary = "-----=".md5(rand());
// adresse expediteur
$exp = "From: \"".$nom."\"".$mail.$passage_ligne;
// adresse de retour
$ret = "Reply-to: \"".$nom."\"".$mail.$passage_ligne;
// version mime
$mime = "MIME-Version: 1.0".$passage_ligne;
// content-type
$content = "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
// HEADER DU MAIL
$header = $exp.$ret.$mime.$content;
return $header;
}
// function MAIL PHP (format html)
function send_mail_html($mail_dest, $mail_exp, $sujet, $nom_exp, $msg_html)
{
// initialisation
$header = "";
$contenu = "";
// création du header
$header = header_mail($mail_dest, $mail_exp, $nom_exp);
// Création du message.
$contenu = message_mail_html($msg_html, $mail_dest);
// Envoi du mail
mail($mail_dest,$sujet,$contenu,$header);
}