如何将图像嵌入 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 电子邮件中提取嵌入的图像

逻辑应用和 Outlook 嵌入图像

如何使用 Outlook 2010(无 smtp)和 python 发送带有嵌入图像(不是附件)的 HTML 格式电子邮件

在 html 中嵌入图像以自动发送 Outlook365 电子邮件

无法在使用 python smtplib/email 发送的 Outlook 2013 电子邮件中显示嵌入图像

是否可以像 Outlook RTF/TNEF 那样在 html 电子邮件中嵌入非图像附件?