使用php在html电子邮件中显示图像

时间:2013-08-01 08:54:28

标签: php image email phpmailer

我已经阅读了一些关于此的主题,已经尝试了很多这些主题,但到目前为止它们都没有奏效。所以我现在已经失去了做什么,在电子邮件中显示这些图像非常重要。

以下是我的代码的缩短版本:

require_once("class.phpmailer.php");
$body = '
    <body style="margin: 10px auto;">
            <table width="100%">
                <tr>
                    <td width="360">
                        <img src="cid:trip_2" alt="trip_2">
                        <!--<img src="trip_2.png" alt="trip_2">-->
                    </td>
                </tr>
            </table>
            <table width="100%">
                <tr>
                    <td align="right" width="360">
                        <img src="cid:pic" alt="pic">
                        <!--<img src="pic.png" alt="pic">-->
                    </td>
                </tr>
            </table>
            <table width="100%">
                <tr>
                    <td width="360">
                        <img src="cid:pub" alt="pub">
                        <!--<img src="pub.png" alt="pub">-->
                    </td>
                </tr>
            </table>
        </div>
    </body>';

    $mail = new PHPMailer();

    $mail->Host       = "smtp.gmail.com";
    $mail->Port       = 25;
    $mail->Username   = "*****";
    $mail->Password   = '*****'

    $mail->IsHTML(true);
    $mail->Subject = "Please appear";
    $mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
    $mail->SetFrom("example@example.com","Example");
    $mail->AddReplyTo("example@example.com","Example");
    $mail->AddAddress("example@example.com", "Example");

    $mail->AddEmbeddedImage("trip_2.png", "trip_2","trip_2.png");
    //$mail->AddAttachment("trip_2.png");
    $mail->AddEmbeddedImage("pic.png", "pic","pic.png");
    //$mail->AddAttachment("pic.png");
    $mail->AddEmbeddedImage("pub.png", "pub","pub.png");
    //$mail->AddAttachment("pub.png");
    $mail->MsgHTML($body);

    $mail->Send();

我想要实现的是默认情况下在电子邮件中显示这3个图像。因此,用户无需点击&#34;显示来自此地址的图像&#34;或类似的东西。因为没有图像,电子邮件会有点空,我们需要电子邮件中的一些风格。

抱歉我的语法伙伴, 谢谢你的时间。

标记

4 个答案:

答案 0 :(得分:2)

在Gmail中: You can't without the user approving your imagery。这是一种反垃圾邮件/反跟踪技术,默认情况下必须关闭才能工作。

您可以通过验证发送的电子邮件使Gmail显示图像(嵌入到内容中)。您只需确保您有正确的SPF记录,并且1024位DKIM对该消息进行了签名。然后gmail在内容中显示嵌入的图像。

答案 1 :(得分:1)

这不是代码中的限制。限制在于用户的电子邮件客户端。如果没有用户自己点击“自动显示来自此发件人的图像”或类似的内容,则无法绕过此操作。

答案 2 :(得分:0)

自2013年12月起,Gmail默认为shows inline images

但用户仍然可以turn it off

答案 3 :(得分:0)

我之前遇到过同样的问题,这里我是如何解决它的。我使用了你为图像做的相同的东西(AddEmbeddedImage + cid:name),但是,在添加时

require("PHPMailer_5.2.0/PHPMailerAutoload.php");

而不仅仅是课程,它起作用了。

希望它有所帮助。