【问题标题】:Mail Mime image in email body not showing up using MailMime addHtml(...)电子邮件正文中的邮件 Mime 图像未使用 MailMime addHtml(...) 显示
【发布时间】:2014-07-29 13:30:42
【问题描述】:

Mail_Mime 1.8.9 邮件 1.2.0 php 5.4.12 项目 = 从我的本地主机开发计算机 (LAN) 运行。

您好,我正在尝试将图像添加到我使用 MailMime 发送的电子邮件中。图像永远不会加载。我将执行以下步骤:

在这里,我将删除图像中的所有内容,但图像名称和扩展名(即:noimage.jpg)除外。然后我为非图像相关目的创建一个链接,然后使用剥离的图像名称和扩展名创建图像标签。

$url = substr($baseImage, 36);
$domainName = DomainNameUtil::getWebSiteDomainName();
$projectPath = DomainNameUtil::getPathToProject();
$productUrl = $domainName . $projectPath  . "/client/app/#/products/" . $product->id;
$productLink = "<a href='$productUrl'>$product->name</a>";
$string = "<img src='$url' /><br />";

我在这里发消息

$mailConfig = MailConfigurationUtil::getMailConfigurationData();
$headers = array (
  'From' => $from,
  'To' => $to,
  'Subject' => $subject
);
$crlf = "\n";
$mime = new Mail_mime(array('eol' => $crlf));
$mime->setHTMLBody($body);
$headers = $mime->headers($headers);
$smtp = Mail::factory('smtp', array (
  'host' => $mailConfig->mailServer,
  'port' => $mailConfig->port,
  'auth' => true,
  'username' => $mailConfig->userName,
  'password' => $mailConfig->password
));

$productManager = new ProductManager();
$ordersManager = new OrdersManager();
$orderVirtualItem =  $ordersManager->getOrderVirtualItemByBoxId($boxId);
$product = $productManager->getProductById($orderVirtualItem->itemId);
$url = $product->baseImage;
$domain = DomainNameUtil::getWebSiteDomainName();
$path = DomainNameUtil::getPathToProject();
$r = substr($url, 5);
$finalUrl = $domain . $path . $r;
$mime->addHTMLImage(file_get_contents($finalUrl),'image/jpeg',basename("noimage"),false, "blackstone");
$body = $mime->get();
$mail = $smtp->send($to, $headers, $body);

在上面的例子中,我知道图像被称为 noimage.jpeg,所以在上面的 addHtmlImage 中我只是简单地说明了名称。我的印象是addHtmlImage中使用的名称必须与html正文中图像src标签中的图像名称相同。

当我实际发送电子邮件时,我收到了电子邮件,并收到一些文字说有图像,但我的电子邮件正文中的图像标签没有加载。 此外,在 firebug 下查看它有一个附加到图像 src 的代理。它还将其引用为 PROXYADDRESS#http://noimage.jpg

谁有这方面的经验可以帮助我理解为什么图片没有加载?

作为参考,我看到有人在网上发布这个方法并尝试复制他们。在此之前,我什至尝试将整个 url 放在图像 src 中,而不是将图像添加到 MIME,但它不起作用。

【问题讨论】:

    标签: php html-email email-attachments mime-mail


    【解决方案1】:

    我在这里遇到了非常相似的问题。

    到目前为止我得到了什么:它取决于 phpversion(并安装了 Mail_Mime)。 Mail_Mime 在 php 5.4.30 下似乎“坏了” 如果我在 php 5.2.17 下运行我的脚本,所有图像都会正确显示 如果我在 php 5.4.30 下运行我的脚本,所有图像都不会正确显示

    当我比较两个源代码时,似乎 5.4.30 下的 Mail_Mime 在边界顺序和 Content-Type 方面变得混乱: 内容类型:多部分/替代;在 5.2.17 内容类型:多部分/相关; 5.4.30在此处输入图片描述

    【讨论】:

      【解决方案2】:

      指定 context-id(addHtmlImage() 的最后一个参数)时,您必须正确引用 html 消息中的图像:&lt;img src="cid:context-id@local" /&gt;。当然,用您自己的上下文 id 替换上下文 id 以显示每个图像。

      【讨论】:

        猜你喜欢
        • 2013-02-10
        • 1970-01-01
        • 2019-12-14
        • 1970-01-01
        • 2011-10-17
        • 1970-01-01
        • 2019-12-12
        • 2015-06-16
        • 1970-01-01
        相关资源
        最近更新 更多