Bonjour,
Dans le cadre d'un développement, j'ai besoin d'envoyer des mail au format HTML via la fonction mail() de PHP, mon souci est que le mail est reçu en BRUT c'est à dire que je vois le boundary et la source HTML au lieu d'être afficher en HTML.
Avant j’utilisais une fonction basé sur du SMTP, mais pour ce projet on me demande d'utiliser mail()
Voici ma fonction
L'émail est bien envoyé mais voici ce que ça donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 function sendEmail($msg,$reply,$subject){ global $pdo; /** Intégration des données dans le gabarit HTML **/ $mail_message = new OfilTpl('mods/Contacts/tpl',"contact-mail"); $mail_message->addVar('MSG',stripslashes($msg)); $mail_message->addVar('FROM',$reply); $h = strftime("%H",time()); $heure = ($h+2); $passage_ligne = "\r\n"; $mail_message->addVar('LE',strftime("%d/%m/%Y à ".$heure.":%M")); /** Récupère le format HTML du message **/ $html_message = $mail_message->_getHTML(); // Donne <html><head></head><body>$msg</body></html> $message_txt = $msg; // Format texte //=====Création de la boundary $boundary = "-----=".md5(rand()); /** Paramètrage du mail **/ $sujet = $subject; $destinataire = "lui@domaine.com"; //=====Création du header de l'e-mail. $header = "From: \"Moi\"<moi@domain.be>".$passage_ligne; // moi@domain.be est remplacer par mon adresse email $header .= "X-Mailer: PHP/".phpversion().$passage_ligne; $header .= "Reply-To: ".$reply."\n"; $header .= "MIME-Version: 1.0".$passage_ligne; $header .= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne; //========== //=====Création du message. $message = $passage_ligne."--".$boundary.$passage_ligne; //=====Ajout du message au format texte. $message.= "Content-Type: text/plain; charset=\"iso-8859-1\"".$passage_ligne; $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; $message.= $passage_ligne.$message_txt.$passage_ligne; //========== $message.= $passage_ligne."--".$boundary.$passage_ligne; //=====Ajout du message au format HTML $message.= "Content-Type: text/html; charset=\"iso-8859-1\"".$passage_ligne; $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; $message.= $passage_ligne.$html_message.$passage_ligne; //========== if(mail($destinataire,utf8_decode($sujet),$message,$headers)) { //echo "L'email a bien été envoyé."; return true; } else { //echo "Une erreur c'est produite lors de l'envois de l'email."; return false; } }
Je suppose un problème peux-être au niveau des entête, mais je n'arrive pas à déboguer ça.-------=a28b4955e5885e237e0ecd2265755d4b
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
Bonjour,<br/><br/>Vous avez reçus une nouvelle demande de contact via le site RECUPère<br/><br/><i>-------- Début du message --------<br/><br/>mon quisième test<br/><br/>-------- Fin du message --------</i><br/><br/>Vous pouvez répondre à ce message en cliquant sur le bouton répondre de votre logiciel de messagerie.<br/><br/>Bien à vous<br/>Auto-Message...
-------=a28b4955e5885e237e0ecd2265755d4b
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
<html>
<head>
<title>Demande de contact</title>
</head>
<body>
<table style="width:90%;margin: 0 auto;border-collapse:collapse;border:solid 1px #aaa;background-color:#fff;">
<tr>
<th style="padding:15px;background-color:#695C56;color:#fff;">Contact depuis le site</th>
</tr>
<tr>
<td style="padding:15px;">
Venant de : lui@domaine.com<br />
Le : 26/06/2018 Ã 11:50
</td>
</tr>
<tr>
<td style="padding:15px;">Bonjour,<br/><br/>Vous avez reçus une nouvelle demande de contact via le site<br/><br/><i>-------- Début du message --------<br/><br/>mon quisième test<br/><br/>-------- Fin du message --------</i><br/><br/>Vous pouvez répondre à ce message en cliquant sur le bouton répondre de votre logiciel de messagerie.<br/><br/>Bien à vous<br/>Auto-Message...</td>
</tr>
</table>
</body>
</html>
D'avance merci pour votre participation
Bien à vous
Partager