Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2322 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Mauvais affichage de mail dans Gmail

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mauvais affichage de mail dans Gmail

n°1263427
Asmodean
Posté le 10-12-2005 à 01:26:09  profilanswer
 

Bonjour tout le monde,
 
Voila j'ai un petit probleme avec un script d'envoie de mail.
 
voila comment je prepare le mail:

Code :
  1. $boundary = "-----=" . md5(uniqid(rand()));;
  2.   $headers = "From: \"Fallen Galaxy\" <support@fallengalaxy.com>\n";
  3.   $headers .= "MIME-Version: 1.0\n";
  4.   $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";
  5.   $subject = "Newsletter Fallen Galaxy";
  6.   $message_txt  = blabla
  7.   $message_html  = "<html>\n";
  8.   $message_html .= "<body>\n";
  9.   $message_html .= "<table width=\"600px\" style=\"border-collapse: collapse;\">\n";
  10.   $message_html .= "<tr height=\"5px\">\n";
  11.   $message_html .= " <td style=\"background-image: url(http://www.fallengalaxy.com/images/test/stats_top.gif);background-repeat: no-repeat;\"></td>\n";
  12.   $message_html .= "</tr>\n";
  13.   $message_html .= "<tr height=\"300px\">\n";
  14.   $message_html .= " <td style=\"background-image: url(http://www.fallengalaxy.com/images/test/stats_body.gif);background-repeat: repeat-y;\" align=\"center\">\n";
  15.   $message_html .= "  <img src=\"http://www.fallengalaxy.com/images/test/Bann.png\" style=\"position: relative;left: center;top:5px;\"/>\n";
  16.   $message_html .= " </td>\n";
  17.   $message_html .= "</tr>\n";
  18.   $message_html .= "<tr height=\"5px\">\n";
  19.   $message_html .= " <td style=\"background-image: url(http://www.fallengalaxy.com/images/test/stats_bottom.gif);background-repeat: no-repeat;\"></td>\n";
  20.   $message_html .= "</tr>\n";
  21.   $message_html .= "</table>\n";
  22.   $message_html .= "</body>\n";
  23.   $message_html .= "</html>\n";
  24.   $message  = "This is a multi-part message in MIME format.\n\n";
  25.   $message .= "--" . $boundary . "\n";
  26.   $message .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
  27.   $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
  28.   $message .= $message_txt;
  29.   $message .= "\n\n";
  30.   $message .= "--" . $boundary . "\n";
  31.   $message .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n";
  32.   $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
  33.   $message .= $message_html;
  34.   $message .= "\n\n";
  35.   $message .= "--" . $boundary . "--\n";


 
Donc mon mail part bien et je le recoit bien mais sur gmail j'obtiens un lien brisé avec comme codes original le bon mais comme "Message text garbled?" le lien de l'image brisé et si je regarde la source de ce fichier ca donne
 

Code :
  1. -------=5289218c4b6ef82f7efbaf9<WBR>9b55d241c
  2. Content-Type: text/html; charset=ISO-8859-1
  3. Content-Transfer-Encoding: 8bit
  4. <table width>
  5. <tr height>
  6. <td></td>
  7. </tr>
  8. <tr height>
  9. <td align>
  10.  <img>
  11. </td>
  12. </tr>
  13. <tr height>
  14. <td></td>
  15. </tr>
  16. </table>
  17. -------=5289218c4b6ef82f7efbaf9<WBR>9b55d241c--


 
Donc si qqu a une idée d'ou ca peut venir ^^
 
J'ai essayé de m'envoyer des mail par hotmail mais la ils arrivent meme pas :p


Message édité par Asmodean le 10-12-2005 à 01:29:02
mood
Publicité
Posté le 10-12-2005 à 01:26:09  profilanswer
 

n°1263450
gatsu35
Blablaté par Harko
Posté le 10-12-2005 à 08:26:26  profilanswer
 

par hotmail c'est ptet a cause du courrier indésirable qui est activé
mais pour gmail j'en sais rien tu as du zapper quelque chose.
 
Et si tu faisait un echo $message_html et echo $message
et tu regarde le code source de la page générée. Ca sera plus intelligennt

n°1263799
Asmodean
Posté le 10-12-2005 à 22:40:59  profilanswer
 

Bon j'ai résolu mon problème donc voilà d'où ca venait:
 
1-Un mail n'aime pas l'attribut style="" donc pour mettre un background je passe par background="url" par exemple
2- A la place de ceux deux lignes  

Code :
  1. $message .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n";
  2. $message .= "Content-Transfer-Encoding: quoted-printable\n\n";


 
J'ai mis
 

Code :
  1. $message .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n";
  2. $message .= "Content-Transfer-Encoding: binary\n\n";


 
Bon sinon pour les délais ca vient de ovh puisque je recoit bien le mail (et en meme temps) sur caramail et gmail. Par contre hotmail ca ne vient pas(et non ce n'est pas dans courrier indesirables)...alors je voudrais savoir si y'a moyen de préciser dans le header une adreese vers laquelle est renvoyé les erreur et retour eventuels?


Message édité par Asmodean le 10-12-2005 à 22:42:02
n°2214323
skov
Posté le 22-12-2013 à 22:39:36  profilanswer
 

Bonjour,
 
J'envoie mon e-mail depuis un site hébergé sur one and one, sur le messagerie one and one tout se passe bien, j'ai tester sur hotmail çà passe aussi. par contre sur gmail, il semble ne pas prendre mon header.
 
J'ai fait le tour de nombreux forum pour voir les solutions existantes mais je dois avoir les yeux qui ne voit plus clairs car je vois pas d'où vient le problème.
 
Voici mon code et le résultat dans gmail
 

Code :
  1. <?php
  2. session_start();
  3. require('fct_espclient.php');//insertion page fonctions
  4. $session_id=$_SESSION['session_id'];
  5. if (!isset($_SESSION['session_id']))
  6. {
  7. echo "<script language='javascript'>window.top.location.href='index.php'</script>";
  8. }
  9. else
  10. {
  11. $f=connect();
  12. $action_id=$_POST["action_id"];
  13. $struct_id=$_POST["struct_id"];
  14. if (isset($_POST["urgent"]))$urgent="urgent: ";
  15. else $urgent="";
  16. $struct_mail=$_POST["struct_mail"];
  17. $objet=$_POST["objet"];
  18. $contenu=$_POST["contenu"];
  19. $struct_nom=$_POST["struct_nom"];
  20. include('menugen.php');
  21. echo "<table width='70%' border='0' cellspacing='0' cellpadding='0'>";
  22. if (isset($_FILES['userfile']) && is_uploaded_file($_FILES['userfile']['tmp_name'])or ((isset($_POST['doc_id']))and($_POST['doc_id']!="" ))) $HA_supp="oui";
  23. else $HA_supp="non";
  24. $requete1=mysql_query("select * from utilisateur,session where (session.session_id=$session_id)and(session.user_id=utilisateur.user_id)" );
  25. while ($row=mysql_fetch_array($requete1))
  26. {
  27. $d=date("Y-m-d" );
  28. $query = "INSERT INTO heure_action (HA_id,tache_id,HA_date,HA_comment,user_id,HA_supp,comm_id,HA_etat,action_id)
  29.        VALUES('','2','$d',\"mail &agrave; $struct_nom \",'$row[user_id]','$HA_supp','1','valide','$action_id');";
  30. $result = MYSQL_QUERY($query);
  31. $req_sess="select max(HA_id) k from heure_action";
  32.                        $result_sess = MYSQL_QUERY($req_sess);
  33.                        while($rsk = mysql_fetch_object($result_sess))
  34.                        {
  35.                                $HA_id=$rsk->k;
  36.                        }
  37.                        mysql_free_result($result_sess);
  38. mysql_query("insert into message values ('',\"$objet\",\"$contenu\",'$HA_id','non')" );
  39. $req_sess="select max(mess_id) k from message";
  40. $result_sess = MYSQL_QUERY($req_sess);
  41. while($rsk = mysql_fetch_object($result_sess))
  42. {
  43.       $mess_id=$rsk->k;
  44. }
  45. mysql_free_result($result_sess);
  46. mysql_query("insert into mess_struc values ('','$mess_id','$struct_id')" );
  47. $suj=$urgent.$objet;
  48. $mail_to ="xxxxxxxxxx@hotmail.com";//Destinataire   
  49. $from_mail = $row['user_mail']; //Expediteur   
  50. $from_name = $row['user_mail']; //Votre nom, ou nom du site   
  51. $reply_to = $row['user_mail']; //Adresse de réponse   
  52. $subject = utf8_decode($suj);
  53. $subject = mb_encode_mimeheader($subject,"UTF-8" ); 
  54. $contenuhtml="";
  55. echo "<tr>
  56.  <td align='left'><font face='Verdana' size='2'>From:&nbsp;$from_mail</font></td>
  57. </tr>
  58. <tr>
  59.  <td align='left'><font face='Verdana' size='2'>To:&nbsp;$mail_to</font></td>
  60. </tr>
  61. <tr>
  62.  <td align='left'><font face='Verdana' size='2'>$subject</font></td>
  63. </tr>
  64. <tr>
  65.  <td align='left'><font face='Verdana' size='2'>";
  66.   $matches=preg_split("/\n/i","$contenu" );
  67.          $i=0;
  68.                         while (isset($matches[$i]))
  69.                         {
  70.                                 if ($i!=0) echo "<br>";
  71.                                 echo "$matches[$i]";
  72.                                $contenuhtml.=$matches[$i]."<br>";
  73.           $i++;
  74.                         }
  75.   echo "</font></td>
  76. </tr>";
  77. // clé aléatoire de limite
  78. srand((double)microtime()*1000000);
  79. $boundary = md5(uniqid(rand()));
  80. // Headers
  81. $entete = "MIME-Version: 1.0 \n"; 
  82. $entete .= "Content-Type: multipart/mixed; boundary=\"$boundary\" \n";
  83. $entete .= "From: $from_mail \n"; 
  84. $entete .= "Bcc: $from_mail, blain1965@gmail.com \n";
  85. $entete .= "X-Priority: 1 \n"; 
  86. $entete .= "Content-Transfer-Encoding:8bit \n";
  87. $entete .= 'X-Mailer: PHP/' . phpversion();
  88. $entete .= " \n"; 
  89. // Message
  90. $message  = "This is a multi-part message in MIME format. \n";
  91. $message  .= "--$boundary \n";
  92. $message .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
  93. $message .= "Content-Transfer-Encoding: binary\n";
  94. $message .= $contenu;
  95. $message .= "\n";
  96. $message  .= "--$boundary \n"; 
  97. $message .= "Content-Type: text/html; charset=\"iso-8859-1\" \n"; 
  98. $message .= "Content-Transfer-Encoding:binary \n"; 
  99. $message .= "\n"; 
  100. $message .= $contenuhtml; 
  101. $message .= "\n"; 
  102. // Pièce jointe
  103. if (isset($_POST['doc_id']))
  104. {
  105. $requete2=mysql_query("select doc_nom from document where(doc_id=$_POST[doc_id])" );
  106. while ($res=mysql_fetch_array($requete2))
  107. {
  108.  $file_name = $res['doc_nom'];
  109.  if (file_exists(".docs/".$file_name))
  110.  {
  111.   $file_type = filetype(".docs/".$file_name);
  112.   $file_size = filesize(".docs/".$file_name);
  113.   $content = file_get_contents(".docs/".$file_name);
  114.   $content = chunk_split(base64_encode($content));
  115.   $message .= "--$boundary \n";
  116.   $message .= "Content-type: $file_type;name=\"$file_name\"\n";
  117.   $message .= "Content-transfer-encoding:base64 \n";
  118.   $message .= "Content-Disposition: attachment; filename=\"$file_name\" \n"; 
  119.   $message .= "\n"; 
  120.   $message .= $content."\n";
  121.   $message .= "\n";
  122.   mysql_query("insert into mess_pj values ('','$mess_id','$_POST[doc_id]','')" );
  123.  }
  124. }
  125. mysql_free_result($requete2);
  126. }
  127. if (isset($_FILES['userfile']) && is_uploaded_file($_FILES['userfile']['tmp_name']))
  128. {
  129.          $file_name = $_FILES['userfile']['name'];
  130.            $file_type = filetype($_FILES['userfile']['tmp_name']);
  131.            $file_size = filesize($_FILES['userfile']['tmp_name']);
  132.            $content = chunk_split(base64_encode(file_get_contents($_FILES['userfile']['tmp_name'])));
  133.  $message .= "--$boundary \n";
  134.   $message .= "Content-type: $file_type;name=\"$file_name\"\n";
  135.   $message .= "Content-transfer-encoding:base64 \n";
  136.   $message .= "Content-Disposition: attachment; filename=\"$file_name\" \n"; 
  137.   $message .= "\n"; 
  138.   $message .= $content."\n";
  139.   $message .= "\n";
  140.   mysql_query("insert into mess_pj values ('','$mess_id','',\"$file_name\" )" );
  141.            unlink($_FILES['userfile']['tmp_name']);
  142.         //...
  143. }
  144. // Fin
  145. $message .= "--".$boundary."-- \n end of the multi-part";
  146. // Function mail()
  147. mail($mail_to, $subject, $message, $entete);
  148. }
  149. mysql_free_result($requete1);
  150. mysql_close($f);
  151. ?>
  152. <tr><td align='center'><br><img src='image/fermerp.jpg' onClick="window.close()" alt='Fermer'></td></tr>
  153. </table>
  154. </div>
  155. </body>
  156. </html>
  157. <?php
  158. }
  159. ?>


 
 
J'ai deux sources possible pour les pièces jointes, soit sur l'herbergeur (listées sur une BDD) soit uploader
 

Code :
  1. From: xxxxxx@gmail.com
  2. To: 
  3. Date: Sun, 22 Dec 2013 22:24:04 +0100
  4. Subject: test
  5. This is a multi-part message in MIME format.
  6. --56cb8620624e6641bbe66343a30b06c0
  7. Content-Type: text/plain; charset="ISO-8859-1"
  8. Content-Transfer-Encoding: binary
  9. teste
  10. --56cb8620624e6641bbe66343a30b06c0
  11. Content-Type: text/html; charset="iso-8859-1"
  12. Content-Transfer-Encoding:binary
  13. teste<br>
  14. --56cb8620624e6641bbe66343a30b06c0
  15. Content-type: file;name="Affiche fete noel 2013.pdf"
  16. Content-transfer-encoding:base64
  17. Content-Disposition: attachment; filename="Affiche fete noel 2013.pdf"
  18. JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu
  19. Zyhmci1GUikgL1N0cnVjdFRyZWVSb290IDgwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4v
  20. UGFnZUxhYmVscyAxMTAgMCBSPj4NCmVuZG9iag0KMiAwIG9iag0KPDwvVHlwZS9QYWdlcy9Db3Vu
  21. dCAxL0tpZHNbIDMgMCBSXSA+Pg0KZW5kb2JqDQozIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50
  22. IDIgMCBSL1Jlc291cmNlczw8L1hPYmplY3Q8PC9JbWFnZTUgNSAwIFIvSW1hZ2U3IDcgMCBSL0lt
  23. <<je raccourci ici>>
  24. bGVyDQo8PC9TaXplIDExMi9Sb290IDEgMCBSL0luZm8gNzkgMCBSL0lEWzw0Q0JDMUJDREM1NzU3
  25. OTQ0QUY5MERCMEY4OTMwMkU0MD48NENCQzFCQ0RDNTc1Nzk0NEFGOTBEQjBGODkzMDJFNDA+XSAv
  26. UHJldiA3NjczMTMvWFJlZlN0bSA3NjY3NjE+Pg0Kc3RhcnR4cmVmDQo3Njk3MTMNCiUlRU9G
  27. --56cb8620624e6641bbe66343a30b06c0--
  28. end of the multi-part


 
merci d'avance


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Mauvais affichage de mail dans Gmail

 

Sujets relatifs
Restriction d'affichage du contenu actif.Affichage du logo java qd on lance un applet ds un navigateur
Fonction mail() et smtp distant ?Redirection après quelques secondes et affichage d'une page
Excel combobox/Listbox affichage/liste/selectionAffichage d'une page xhtml
Avatars phpbb erreur d'affichageAffichage statistiques pages persos free
[résolu] Problème d'affichage dans email envoyé via un formulaire.recuperer données de tableau dans mail
Plus de sujets relatifs à : Mauvais affichage de mail dans Gmail


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR