在邮件正文 phpmailer 类中添加嵌入图像

Posted

技术标签:

【中文标题】在邮件正文 phpmailer 类中添加嵌入图像【英文标题】:Adding embedded images within mail body phpmailer class 【发布时间】:2013-03-09 06:16:33 【问题描述】:

我试图在我的邮件正文中嵌入一张图片,但最终以附件的形式出现

    $mailer->Subject = APP_NAME . " - " . $name . " send you and Ad : " . $row['name'];
    $mailer->Ishtml(true);
    $mailer->AddEmbeddedImage('../images/namDiams.png', 'logoimg', 'namDimes.png'); 

    //footer
    $footer = "Regards<br/><br/>";
    $footer .= '<table style="width: 95%">';
    $footer .= '<tr>';
    $footer .= '<td>';
    $footer .= "<strong><span style='font-size: 15px'>NamDimes Team</span></strong><br/>
                    NamDimes<br/>
                    Contact Number: " . APP_CONTACT . "<br/>
                    Email: " . APP_EMAIL . "<br/>
                    Website: " . APP_WEBSITE . "<br/>";
    $footer .= '</td>';
    $footer .= '<td style="text-align:right">';
    $footer .= '<img src=\"cid:logoimg\" />';
    $footer .= '</td>';
    $footer .= '</tr>';
    $footer .= '</table>';

    $mailer->Body = $body . $footer;
    $mailer->AltBody="This is text only alternative body.";
    $mailer->AddAttachment('../' . $row['image_path'], $row['name'] . ".jpg");

我已经设置了其他所有内容,包括地址、邮件发送出去、我想嵌入正文中的徽标图像作为附件附加,有人知道为什么吗?

【问题讨论】:

您的代码似乎有效。确保拥有最新的 phpmailer 版本。顺便说一句,恕我直言,您应该使用外部图像而不是嵌入式图像。 我没有让你了解外部图像部分,这有点新 只是简单的http:// 链接。就像http://your.site.com/img/mypic.png 如果我这样做,src 属性将被删除 嵌入图像与外部图像是完全不同的两件事——如果你想确保图像在尽可能多的邮件客户端中显示,你应该坚持使用嵌入图像——因为外部图像很可能被阻止以避免用户跟踪。 【参考方案1】:

不要用$mailer-&gt;AddEmbeddedImage,而是直接加

改为&lt;img src="http://.../images/namDiams.png" /&gt;

邮件长度应该更轻...而且有效。

编辑

我不知道它是否会帮助你,但这里有一个小错误:

$mailer->AddEmbeddedImage('../images/namDiams.png', 'logoimg', 'namDimes.png');

应该是

$mailer->AddEmbeddedImage('../images/namDiams.png', 'logoimg', 'namDiames.png');//the last param the second 'a' was missing...

另一个话题here

【讨论】:

如果我这样做,如何从 img 标签中删除 src 属性【参考方案2】:

我可以确认 user2189925 的回答确实有效。但是,我使用绝对路径,因为调用脚本的位置比图像的位置更有可能发生变化。 例如

<img src="C:\folder\images\namDiames.png" />

【讨论】:

指向硬盘上的本地文件永远不会出现在实际的电子邮件中。所以这永远行不通。 这对我有用。 PHPMailer 足够聪明,可以通过将src 属性的值替换为图像的实际源数据来将图像嵌入到电子邮件中。【参考方案3】:

遇到同样的问题,于是我决定更换如下

<img src="img/example.jpg"

<img src= "https://mysitename.com/img/example.jpg">

它成功了。

【讨论】:

【参考方案4】:

只需将图像的路径提供给邮件正文,例如:(img src="../images/cat.jpeg) 它肯定会起作用

【讨论】:

以上是关于在邮件正文 phpmailer 类中添加嵌入图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 phpmailer 中嵌入图像 - 我做不到,为啥?

在邮件正文中插入图像

php图像显示无需在邮件中下载

在电子邮件正文中显示附加图像

强制 phpmailer 发送正文为空的邮件

在电子邮件正文中嵌入 base64 图像