使用 PHPMailer 和 Mandrill 发送模板

Posted

技术标签:

【中文标题】使用 PHPMailer 和 Mandrill 发送模板【英文标题】:Sending templates with PHPMailer and Mandrill 【发布时间】:2014-10-26 15:22:14 【问题描述】:

我使用 phpMailer 编写了一个脚本,该脚本使用 Mandrill 发送电子邮件。我正在尝试发送一个用 bootstrap 制作的 html 模板,但是当邮件到来时,CSS 不起作用。 我尝试使用 file_get_contents() 函数获取 html 内容,但它没有获取引导样式表。有什么想法吗?

这是脚本

<?php
        include "../phpmailer/PHPMailerAutoload.php";

        include "../phpmailer/class.phpmailer.php";

        error_reporting(E_ALL^E_NOTICE);


        if (!isset($_POST['Submit']) |$_POST['Submit'] != 'Trimite') 

                $adress = '';

         else 

        $adress = $_POST['adress'];

        $mail   = new PHPMailer;

        $mail->isSMTP();

        $mail->Host     = 'smtp.mandrillapp.com';

        $mail->Port     = 587;

        $mail->SMTPAuth = true;

        $mail->Username = 'username';

        $mail->Password = 'key';

        $mail->SMTPSecure       = 'tsl';

//      $mail->SMTPDebug        = 1;

        $mail->From     = 'email@example.com';

        $mail->FromName = 'Name';

        $mail->AddAddress($adress);

        $mail->IsHTML(true);

        $mail->Subject = 'Subject';
        $mail->Body    = file_get_contents( 'process_completed.html' );
        $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    
?>

【问题讨论】:

你的路径正确吗? check this它会帮助你 路径正确。该脚本发送html模板但没有css(bootsrap库的包含) 您要将整个引导程序 CSS 放入电子邮件中?!您知道电子邮件客户端不获取外部样式表吗?要完成这项工作,您必须在 process_completed.html 中包含 CSS - 您没有显示生成正文的代码,这似乎是这个问题的内容。顺便说一句,如果您加载自动加载器(原样),您也不需要加载 PHPMailer 类 - 自动加载器会为您完成。 【参考方案1】:

我用内联 css 制作了一个模板,它可以工作。谢谢。

【讨论】:

【参考方案2】:

许多电子邮件客户端不呈现位于电子邮件 HTML 头部的 CSS。在向 Mandrill 提交电子邮件之前,您需要内联 CSS,或者使用 Mandrill 的 CSS inlining option。

【讨论】:

【参考方案3】:

如果您在电子邮件模板中使用任何外部 css 文件将不起作用。

在电子邮件模板中仅使用内联 css。

【讨论】:

【参考方案4】:
$mail->SMTPSecure       = 'tsl';

应该是:

$mail->SMTPSecure       = 'tls';

【讨论】:

以上是关于使用 PHPMailer 和 Mandrill 发送模板的主要内容,如果未能解决你的问题,请参考以下文章

Mailgun、Mandrill 和 Ses 驱动程序、SMTP 和 phpmailer,在 Laravel 5.1 中使用哪一个?

带有 mandrill smtp 的 PHPMailer 给出连接错误

使用PHPMAILER实现PHP发邮件功能

Mandrill Track Open 不工作

conposer phpmailer 发邮件

PHP中利用PHPMailer配合QQ邮箱实现发邮件