Envoyer un e-mail avec PHPMailer - intégrer l'image dans le corps


97

J'essaye d'envoyer du courrier HTML, avec PHPMailer, avec des images. Le corps est chargé à partir d'un fichier html, qui contient toutes les informations.

Lors de l'envoi du courrier, l'image n'apparaît pas dans le corps, bien que j'envoie même l'image également en pièce jointe.

La <img>balise HTML pointe vers le même endroit que le lieu.

PHP:

$mail->AddAttachment('img/2u_cs_mini.jpg');

Comment puis-je faire pointer le html vers la pièce jointe afin que l'image puisse être chargée dans le corps.

En regardant l'exemple fourni avec PHPMailer, je ne remarque aucune différence, et dans leur cas, l'image apparaît.

Réponses:


206

J'ai trouvé la réponse:

$mail->AddEmbeddedImage('img/2u_cs_mini.jpg', 'logo_2u');

et sur l' <img>étiquette mettresrc='cid:logo_2u'


3
Cela aide parfaitement !!! Par curiosité, où avez-vous trouvé cela? S'il vous plaît, expliquez.
mtk le

Pourquoi la barre oblique inverse à la fin du cid?
Plummer

J'ai fait ça il y a si longtemps, je ne me souviens pas s'il y avait même une raison. Je ne pense pas qu'il y en ait. Juste des ordures, très probablement.
elvispt

8
Je crois que la barre oblique inverse a été laissée par erreur à partir d'un code précédent qui a échappé aux guillemets, comme echo "src=\"cid:logo_2u\""et je ne pense pas que la barre oblique inverse soit nécessaire.
Cruel

9
Pour ceux qui ont besoin d'une explication d'un non-expert: vous devez indiquer au moteur de rendu d'où obtenir l'image et avec quel protocole (pour utiliser une image qui est attachée, vous utilisez le protocole de cid ", Content-ID). Et vous utilisez AddEmbeddedImage pour donner un identifiant à la pièce jointe afin que vous puissiez vous y référer (notez qu'il peut s'agir de sons et d'autres types de fichiers).
PhoneixS

3

Selon le manuel PHPMailer , la réponse complète serait:

$mail->AddEmbeddedImage(filename, cid, name);
//Example
$mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg '); 

Cas d'utilisation :

$mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png");
$mail->Body = 'Embedded Image: <img alt="PHPMailer" src="cid:my-attach"> Here is an image!';

Si vous souhaitez afficher une image avec une URL distante:

$mail->addStringAttachment(file_get_contents("url"), "filename");
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.