我正在发送一封带有php的电子邮件。我有3张图像作为桌面背景,因为我被建议做。问题是在Outlook nad Adroid Gmail应用程序中查看时无法看到电子邮件图像。
以下是使用的代码:
$headers = "From: Furniture \r\n";
$headers .= "Reply-To: info@furniture.com \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$message = '<html><body style="margin: 0;">';
$message .= '<table background="http://mysite.com/emailfinal1.jpg" border="0" width="650" height="506" style="font-family: arial, tahoma;color: black; margin: 0;">
<tr height="308" width="650"><td width="450"></td><td></td></tr>
<tr height="16" width="650" style="font-size:12px;"><td width="450"> </td><td align="left" valign="bottom">'. $first_name . ' ' . $last_name . '</td></tr>
<tr height="16" width="650" style="font-size:12px;"><td width="450"> </td><td align="left" valign="bottom">'. $email . '</td></tr>
<tr height="16" width="650" style="font-size:12px;"><td width="450"> </td><td align="left" valign="bottom">'. $nextdate . '</td></tr>
<tr height="134" width="650"><td width="450"></td><td></td></tr>
</table>
<table background="http://mysite.com/emailfinal2.jpg" border="0" width="650" height="133" style="font-family: arial, tahoma;color: #29468a; margin: 0;">
<tr height="10" width="650"><td width="175"></td><td></td></tr>
<tr height="123" width="650" style="font-size:13px;"><td width="175"> </td><td align="left" valign="baseline"><a href="http://www.mysite.com/unsubscribe.php" target="_blank" style="text-decoration: none;color: #29468a;">UNSUBSCRIBE</a> | <a href="http://www.mysite.com/Terms-And-Conditions.aspx" target="_blank" style="text-decoration: none;color: #29468a;">TERMS & CONDITIONS</a></td></tr>
</table>
<table background="http://mysite.com/emailfinal3.jpg" border="0" width="650" height="60" style="font-family: arial, tahoma;color: #29468a; margin: 0;">
<tr height="20" width="650"><td width="526"></td><td></td></tr>
<tr height="40" width="650" style="font-size:11px;"><td width="526"> </td><td align="left" valign="baseline"><a href="http://www.mysite.com/Contact-Us.aspx" target="_blank" style="text-decoration: none;color: #29468a;">Contact Us</a></td></tr>
</table>';
$message .= "</body></html>";
有什么建议吗?我走错了方向吗?我想让电子邮件默认显示图片。
答案 0 :(得分:1)
许多邮件客户端默认不显示像您这样的电子邮件中外部链接的图像。这样做是出于安全原因(如果我打开垃圾邮件,它不会自动向垃圾邮件发送者的网站发送http请求来获取图像,因为这样可以让垃圾邮件发送者跟踪我)。
大多数邮件客户端确实为用户提供了随后加载邮件的选项,但这并不总是理想的(很多用户都不会打扰 - 我通常不会这样做。)
解决方案是将图像嵌入电子邮件本身,因此它们是邮件的一部分。阻止外部图像的大多数邮件客户端将很乐意显示嵌入的图像。这是使用特殊构造的多部分消息完成的,但我不建议您自己构建它。
如果你还没有这样做(它看起来不像你),那么我建议使用像phpMailer或Swiftmailer这样不错的邮件程序类,而不是原始的PHP mail()
函数。您将获得更多功能,包括将图像嵌入邮件的功能。这应该可以帮助您解决问题。 (作为奖励,它也可能使您的代码更清晰,更容易使用)。
答案 1 :(得分:0)
开发电子邮件以实现多个电子邮件客户端的兼容性很困难,因为他们每个人都有自己的HTML和CSS支持。您可能希望在开发电子邮件时强烈考虑使用电子邮件预览工具。您可能只是阻止了您的图像(这些天是许多电子邮件客户端的默认设置)。基本上我的建议是不依赖于图像的布局或电子邮件的可读性。
这篇文章包含多个电子邮件预览工具的链接:
http://www.smartinsights.com/email-marketing/email-creative-and-copywriting/email-preview-tools/
答案 2 :(得分:0)
出于安全/隐私原因,通常电子邮件客户端会阻止访问外部图像。 确保您已将发件人的电子邮件地址添加到白名单。
如果是你的情况,你不能为此做太多,因为这是客户方面的问题。 更好的方法是使用以下文本为您的网站提供超链接:
如果您无法查看下面的图片,请单击此处。
答案 3 :(得分:0)
首先你必须在你的应用程序中安装phpmailer库,然后在你的图像标签src中添加cid:image1,cid:image2,cid:image3。然后调用邮件发送功能,如下图所示,它将在所有浏览器中显示邮件垃圾邮件问题。
$mail = new PHPMailer();
$body = $body;
$body = eregi_replace("[\]",'',$body);
$mail->Host = ""; // sets GMAIL as the SMTP server
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = ""; // GMAIL username
$mail->Password = ''; // GMAIL password
$mail->SetFrom($fr_email, ');
$mail->AddReplyTo("");
$mail->Subject = $sub;
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$address = $to;
$mail->AddAddress($address, "");
$mail->AddAddress('rikinadhyapak@gmail.com', "");
$notificationpos1 = strpos(strtolower($sub), 'notification');
$notificationpos2 = strpos(strtolower($sub), 'lead');
if($notificationpos1 === false && $notificationpos2 === false){
//Attach an image file
$mail->AddEmbeddedImage('images/image1.jpg','image1');
$mail->AddEmbeddedImage('images/image1.jpg','image2');
$mail->AddEmbeddedImage('images/image2.jpg','image3');
// attach file logo.jpg, and later link to it using identfier logoimg
}
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}