PHPMailer pb avec images dans le corps du mail
Résolu
Alain_42
Messages postés
5361
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Avec PHPMailer_5.2.1 je veux envoyer un mail avec 2 images inclues dans le corps du mail (inline) et 2 pièces jointes.
Je suis chez ovh en mutualisé.
Le mail est bien envoyé, pas d'erreurs affichées, mais les images n'apparaissent pas dans le mail(juste un rectangle à la place).
En regardant le code source du mail, il n'y a pas le codage des images, il y a bien <img src="cid:xxxxxxxxxx" mais pas les blocs de content-transfert-encoding: base64
Par contre c'est tout bon pour les deux pieces jointes.
Merci pour votre aide.
Nota: si je laisse $mail->IsSMTP(); ça ne marche pas du tout
Avec PHPMailer_5.2.1 je veux envoyer un mail avec 2 images inclues dans le corps du mail (inline) et 2 pièces jointes.
Je suis chez ovh en mutualisé.
Le mail est bien envoyé, pas d'erreurs affichées, mais les images n'apparaissent pas dans le mail(juste un rectangle à la place).
En regardant le code source du mail, il n'y a pas le codage des images, il y a bien <img src="cid:xxxxxxxxxx" mais pas les blocs de content-transfert-encoding: base64
Par contre c'est tout bon pour les deux pieces jointes.
Merci pour votre aide.
Nota: si je laisse $mail->IsSMTP(); ça ne marche pas du tout
<?php require("PHPMailer-5.2.1/class.phpmailer.php"); //tableau des applis correspondant à image ou au fichier joint $tabl_applis=array("doc"=>"application/msword","pdf"=>"application/pdf","xls"=>"application/vnd.ms-excel", "ppt"=>"application/vnd.ms-powerpoint","pps"=>"application/vnd.ms-powerpoint","zip"=>"application/zip", "wav"=>"audio/x-wav","gif"=>"image/gif","jpeg"=>"image/jpeg","jpg"=>"image/jpeg","png"=>"image/png", "html"=>"text/html","txt"=>"text/plain","avi"=>"video/msvideo","pdf"=>"application/pdf"); $adresse="mon adresse mail";; $mailsujet="essai ".date('Y-m-d H:i:s'); $array_liste_fich_joint=array("fichier_1.doc","fichier_2.pdf"); $dossier_fichiers_joints='fichiers_a_joindre'; $contenu_fichier_message='<html><body><p>Message avec 2 images et 2 PJ</p> <p> <img alt="" src="/_include/images/photo_site_auberge_ii.jpg" style="width: 50px; height: 50px; float: left; margin: 10px;" />Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus</p> <p> </p> <p> <img alt="" src="/_include/images/ESPADON.jpg" style="width: 60px; height: 57px; margin: 20px;" />Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur</p> </body></html>'; echo $contenu_fichier_message; //ça c'est pour voir si on atteint bien les images depuis le scrip php, elles s'affichent bien ! //traitement des images pour remplacement src par CID $list_images=array(); //capture des src des <img if(preg_match_all(''<img .*? src="(.*?)"'',$contenu_fichier_message, $out)){ /*echo '<pre>'; print_r($out[1]); echo '</pre>';*/ if(isset($out[1]) && sizeof($out[1])>0){ for($i=0;$i<sizeof($out[1]);$i++){ $pattern[$i]='#'.$out[1][$i].'#';////transfo en pattern $cid=uniqid(mt_rand()); //generation du CID $replacement[$i]='cid:'.$cid; //replacement //memo dans un array $list_images[$i]['chemin_image']=$out[1][$i]; $list_images[$i]['CID']=$cid; } /* echo 'Array liste images <br /><pre>'; print_r($list_images); echo '</pre>'; */ $contenu_fichier_message=preg_replace($pattern,$replacement,$contenu_fichier_message); } } $corps_message=$contenu_fichier_message; $mail = new PHPMailer();//$mail = new PHPMailer(); //$mail->IsSMTP(); $mail->IsMail(); //$mail->Host = "smtp1.example.com;smtp2.example.com"; //$mail->SMTPAuth = false; $mail->SetLanguage('fr'); $mail->From="adresse@mon_domaine"; $mail->FromName="my name"; $mail->Sender="adresse@mon_domaine"; $mail->AddReplyTo("adresse@mon_domaine", "Repondre"); //AR //$mail->ConfirmReadingTo = 'adresse@mon_domaine'; $mail->AddAddress($adresse); $mail->Subject =$mailsujet; $mail->IsHTML(true); //images if(sizeof($list_images)>0){ foreach($list_images as $clef=>$value){ $path_parts = pathinfo($value['chemin_image']); //echo '<br />Chemin: '.$value['chemin_image'].' CID= '.$value['CID'].' image: '.$path_parts['basename'].' type: '.$tabl_applis[strtolower($path_parts['extension'])]; //$mail->AddEmbeddedImage($value['chemin_image'], $value['CID'],$path_parts['basename'],'base64',$tabl_applis[strtolower($path_parts['extension'])]); // attach file logo.jpg, and later link to it using identfier logoimg $mail->AddEmbeddedImage($value['chemin_image'], $value['CID'],$path_parts['basename'],'base64','application/octet-stream'); // attach file logo.jpg, and later link to it using identfier logoimg } } //fichiers joints if(sizeof($array_liste_fich_joint)>0){ foreach($array_liste_fich_joint as $cle => $fichier){ $mail->AddAttachment($dossier_fichiers_joints.'/'.$fichier, $fichier); } } $mail->Body = $corps_message; //$mail->AltBody="This is text only alternative body."; if(!$mail->Send()) { echo "Error sending: " . $mail->ErrorInfo;; } else { echo "Letter is sent"; } $mail->ClearAddresses(); $mail->ClearAttachments(); $mail->IsHTML(false); ?>
A voir également:
- PHPMailer pb avec images dans le corps du mail
- Windows live mail - Télécharger - Mail
- Publipostage mail - Accueil - Word
- Des images - Guide
- Comment télécharger un mail - Guide
- Live.fr mail - Forum Mail
2 réponses
je ne connais pas trop ce script ... il y a peut être un "spécialiste" dans le forum ?
?
ou voir ici :
https://code.google.com/archive/a/apache-extras.org/p/phpmailer/issues
et éventuellement y poser question ... ;)
?
ou voir ici :
https://code.google.com/archive/a/apache-extras.org/p/phpmailer/issues
et éventuellement y poser question ... ;)