0

我正在发送一封带有 php 的电子邮件。正如我被建议做的那样,我有 3 张图像作为表格背景。问题是我在 Outlook 和 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">&nbsp;</td><td align="left" valign="bottom">'. $first_name . ' ' . $last_name . '</td></tr>
<tr height="16" width="650" style="font-size:12px;"><td width="450">&nbsp;</td><td align="left" valign="bottom">'. $email . '</td></tr>
<tr height="16" width="650" style="font-size:12px;"><td width="450">&nbsp;</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">&nbsp;</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">&nbsp;</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>";

有什么建议吗?我走错方向了吗?我想让电子邮件默认显示图像。

4

4 回答 4

1

许多邮件客户端默认不显示像您这样的电子邮件中外部链接的图像。这样做是出于安全原因(因此,如果我打开垃圾邮件,它不会自动向垃圾邮件发送者的站点发出 http 请求以获取图像,因为这将允许垃圾邮件发送者跟踪我)。

大多数邮件客户端确实为用户提供了稍后加载邮件的选项,但这并不总是理想的(而且很多用户不打扰——我通常不这样做)。

解决方案是将图像嵌入电子邮件本身,因此它们是消息的一部分。大多数阻止外部图像的邮件客户端都会愉快地显示嵌入的图像。这是使用专门构建的多部分消息完成的,但我不建议您尝试自己构建它。

如果您还没有这样做(看起来不像),那么我建议使用像 phpMailer 或 Swiftmailer 这样的像样的邮件程序类,而不是原始的 PHPmail()函数。您将获得更多功能,包括将图像嵌入邮件的功能。这应该可以帮助您解决问题。(作为奖励,它也可能使您的代码更清晰,更易于使用)。

于 2013-06-11T13:07:18.713 回答
0

开发电子邮件以在多个电子邮件客户端之间实现兼容性是很困难的,因为它们每个都有自己对 HTML 和 CSS 的支持。在开发电子邮件时,您可能需要强烈考虑使用电子邮件预览工具。您可能只是阻止了您的图像(这是当今许多电子邮件客户端的默认设置)。基本上我的建议是不要依赖图像来进行布局或电子邮件的可读性。

这是一篇包含几个电子邮件预览工具链接的文章:

http://www.smartinsights.com/email-marketing/email-creative-and-copywriting/email-preview-tools/

于 2013-04-18T16:52:21.237 回答
0

通常,出于安全/隐私原因,电子邮件客户端会阻止对外部图像的访问。确保您已将发件人的电子邮件地址添加到白名单中。

如果是您的情况,您将无能为力,因为这是客户方面的问题。更好的方法是使用如下文本提供指向您网站的超链接:

如果您无法查看下面的图片,请单击此处。

于 2013-04-18T17:04:39.050 回答
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!";
            }
于 2013-06-11T12:59:25.830 回答