使用PHPMailer发送电子邮件-将图像嵌入体内


97

我正在尝试使用图像发送带有PHPMailer的HTML邮件。正文是从包含所有信息的html文件加载的。

发送邮件时,该图像不会出现在正文中,尽管我什至也将图像作为附件发送。

HTML <img>标记指向与该位置相同的位置。

PHP:

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

如何使html指向附件,以便可以将图像加载到正文中。

查看PHPMailer附带的示例,我没有发现任何差异,在这种情况下,确实出现了图像。

Answers:


206

我找到了答案:

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

并在<img>标签上src='cid:logo_2u'


3
这完全有帮助!出于好奇,您在哪里找到的?请解释。
mtk 2012年

为什么在cid末尾使用反斜杠?
Plummer 2013年

我很久以前就这样做了,我不记得是否有原因。我认为没有。可能只是一些垃圾。
Elvispt 2013年

8
我相信反斜杠是在以前的代码中错误地遗漏了转义引号的代码,例如echo "src=\"cid:logo_2u\"",我不认为反斜杠是必需的。
残酷的

8
对于谁需要非专家的解释:您需要告诉渲染引擎从何处获取图像以及采用哪种协议(要使用附加的图像,请使用“协议,内容ID”。) AddEmbeddedImage为附件提供一个ID,以便您可以引用它(请注意,它可以是声音和其他类型的文件)
PhoneixS 2014年

3

根据PHPMailer手册,完整答案将是:

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

用例:

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

如果要显示带有远程URL的图像:

$mail->addStringAttachment(file_get_contents("url"), "filename");
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.