8797 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je n'arrive pas à envoyer de mail en PHP avec une PJ en format HTML.

A la réception du mail, j'ai bien ma pièce jointe mais tout le code HTML et sa mise en forme en CSS intégrée est mal interprété : je n'ai que du texte...

Avez-vous une idée ?

Merci !
Salut,

C'est de toutes manières dû aux entêtes que tu définis pour ton mail. Par contre, il m'avait été impossible de gérer la partie texte brut (donc pas de text/plain).

Pour exemple avec deux pièces-jointes :

function mail_html($destinataire, $sujet , $messtxt, $messhtml){
// Frontières
$limite = md5(uniqid (rand()));
//$limite_2 = md5(uniqid (rand()));
$separation .= "\n\n----=$limite\n";
//$separation_2 .= "\n\n----=$limite_2\n";
$fin= "\n\n----=$limite--\n\n";
//$fin_2= "\n\n----=$limite_2--\n\n";
//
// Infos envoi
//
$nom_exp = "Nom du contact";
$mail_exp = "contact@exemple.com";
//
$entete = "From: ".$nom_exp."<".$mail_exp.">\n";
$entete .= "Reply-to:".$mail_exp."\n";
$entete .= "Date: ".date("l j F Y, G:i")."\n";
$entete .= "X-Priority: 3\nX-Mailer: Application Prototype\n";
$entete .= "MIME-Version: 1.0\n";
$entete .= "Content-Type: multipart/mixed;";
$entete .= " boundary=\"--=".$limite."\"\n";
$entete .= "Content-Transfer-Encoding: 7bit";

// Le message MIME
$mime = "This is a multi-part message in MIME format. Please use a compatible email client to read it.\nCeci est un message en plusieurs parties au format MIME, merci d'utiliser un lecteur mail compatible pour le consulter.\n----=$limite\n";

//le message en html original
$texte_html = "Content-Type: text/html; charset=utf-8\n";
$texte_html .= "Content-Transfer-Encoding: 8bit\n\n";
$texte_html .= $messhtml;

//le fichier 1
$attachement_1 = "Content-Type: image/jpeg; name=\"image_1.jpg\"\n";
$attachement_1 .= "Content-Transfer-Encoding: base64\n";
$attachement_1 .= "Content-Disposition: attachment; filename=\"image_1.jpg\"\n\n";
$fichier_1=file_get_contents('img/image_1.jpg');
$attachement_1 .= chunk_split(base64_encode($fichier_1));

//le fichier 2
$attachement_2 .= "Content-Type: image/jpeg; name=\"image_2.jpg\"\n";
$attachement_2 .= "Content-Transfer-Encoding: base64\n";
$attachement_2 .= "Content-Disposition: attachment; filename=\"image_2.jpg\"\n\n";
$fichier_2=file_get_contents('img/image_2.jpg');
$attachement_2 .= chunk_split(base64_encode($fichier_2));

//
return mail("$destinataire","$sujet",$mime.$texte_html.$separation.$attachement_1.$separation.$attachement_2.$fin,$entete);
}