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.

elvispt
la source

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'

elvispt
la source
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");
Marie-Eva BB Volmar
la source