Mail_Mime 1.8.9 邮件1.2.0 php 5.4.12 project =从我的localhost开发计算机(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中,并且它不起作用。
答案 0 :(得分:0)
我在这里遇到了类似的问题。
到目前为止我得到了:它取决于phpversion(并安装了Mail_Mime)。 Mail_Mime似乎在php 5.4.30下被“破解”了 如果我在php 5.2.17下运行我的脚本,所有图像都会正确显示 如果我在php 5.4.30下运行我的脚本,所有图像都没有正确显示
当我比较两个源代码时,看起来,5.4.30下的Mail_Mime对于boundarys和Content-Type的顺序变得混乱: 内容类型:multipart / alternative;在5.2.17 内容类型:multipart / related;在5.4.30中图像描述
答案 1 :(得分:0)
指定context-id(addHtmlImage()的最后一个参数)时,必须正确引用html消息中的图像:<img src="cid:context-id@local" />
。当然,用每个要显示的图像的上下文ID替换上下文ID。