0

嗨,这是我第一次尝试使用 base64 编码。

我正在尝试做的一切似乎都很好,除了当我发送电子邮件时,它给了我电子邮件中的所有标签(纯文本)并且它没有正确显示 HTML。

以下是电子邮件如何通过的示例:

html>body>center>table  bgcolor="#012b2b" width="100%">tr>td align="center">img src="data:image/jpg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABGAAD...

我删除了这篇文章的所有 < 第一个括号。

到目前为止我所做的是:

$pathr = "http://www.aboutitgroup.com/dev/sbtours/files/6113/7059/1223/NewsLetter.jpg"

$sep = sha1(date('r', time()));

$attachment = file_get_contents($pathr);

$encoded = base64_encode($attachment);

$headers .= "MIME-Version: 1.0\r\n";

$headers .= " Content-Type: text/html;
            boundary=\"PHP-mixed-{$sep}\"";

$headers .= "Content-Transfer-Encoding: base64";

$subject = 'Newsletter';

$messages ="... img src="data:image/jpg;base64,'.$encoded.'"/>...';

有人可以解释为什么该消息不显示在 HTML 中,而只显示为纯文本。

当我复制通过的电子邮件文本并将其保存为 HTML 文件时,它会正确显示。

谢谢你。

4

1 回答 1

0

这似乎相关:http ://www.webdeveloper.com/forum/showthread.php?185299-Sending-a-HTML-email-in-base64-HELP

尤其是:

要判断路由器是否存在问题,请尝试“引用/可打印”编码类型......甚至可能是 7 位......这不是最佳的,但它应该会给你不同的结果。

要测试服务器和客户端应用程序,请确保指定预期的 mime 版本和字符集,它并不总是暗示...此外,由于您没有在多部分中执行消息并尝试在行中显示消息,我不会甚至将其分块。尝试:

$to = "kit@huntingsportsplus.net"; 
$subject = "$lastName, $firstName - $propertyCounties, $propertyStates - $totalAcreage Acres - $emailAddress"; 
mail ($to,$subject,$message,"From: info@hunt-private-land.com <info@hunt-private-land.com>\n"."MIME-Version: 1.0\n"."Content-type: text/html; charset=iso-8859-1"); 

就我个人而言,我会使用 Zend_Mail 对象——它使您不必做繁重的工作。这是一个很好的起点:http: //zend-framework-community.634137.n4.nabble.com/how-to-show-images-inside-a-html-Zend-Mail-td645323.html

最后,如果您需要知道您的邮件将如何在不同的邮件客户端中呈现,您可以使用 Litmus 进行检查:

于 2013-06-07T12:08:36.740 回答