如何将图像嵌入 Outlook 可接受的电子邮件中
Posted
技术标签:
【中文标题】如何将图像嵌入 Outlook 可接受的电子邮件中【英文标题】:How can I embed an image into an email acceptable to Outlook 【发布时间】:2021-12-23 00:18:39 【问题描述】:我有一些工作 php 代码可以将图像嵌入到电子邮件中,如下所示:
<?php
// Initialise
$mailTo = "john@auser.com";
$mailSubject = "Image Test";
// (Construct html header
$mailHead = implode("\r\n", [
"MIME-Version: 1.0",
"Content-type: text/html; charset=utf-8",
"From: noreply@asite.com"
]);
// Build email body - the image is directly embedded using Base64 Encode
$path = 'test.jpg';
$img = file_get_contents($path);
$imgdata = base64_encode($img);
$mailBody = "<p>Here is an image.</p>";
$mailBody = $mailBody . "<img src='data:image/jpg;base64," . $imgdata . "'/><br>";
// Send email
echo $mailBody;
echo mail($mailTo, $mailSubject, $mailBody, $mailHead)
? "OK" : "ERROR" ;
?>
当您运行此代码作为确认时,它会显示整个电子邮件,包括图像。 我可以使用默认的电子邮件应用程序在我的手机上收到此 OK,但在 Outlook 中它无法通过。我得到一个小方块来显示图像存在,但右键单击并选择下载图片什么都没有显示。
任何人都可以建议修复或推荐适用于 Outlook 的不同方法吗? 非常感谢
【问题讨论】:
【参考方案1】:大多数电子邮件客户端不支持 HTML 中的 Base 64 图像。 (见https://www.caniemail.com/features/image-base64/)
但是,您可以将图像作为 CID 嵌入式附件添加到您的电子邮件中,然后在 HTML 电子邮件中链接到该附件。
这是另一个 Stack Overflow 线程回答这个问题:How to embed images in html email
【讨论】:
您发送的链接建议使用PHPMailer。这可行,但我应该警告其他用户,设置起来并不容易。您首先需要一个 SCP 客户端(我使用 WinSCP)在您的站点上下载并解压缩 PHPMailer。然后看例如help.dreamhost.com/hc/en-us/articles/…以上是关于如何将图像嵌入 Outlook 可接受的电子邮件中的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Outlook 2010(无 smtp)和 python 发送带有嵌入图像(不是附件)的 HTML 格式电子邮件
在 html 中嵌入图像以自动发送 Outlook365 电子邮件