无法使用 laravel + mandrill 发送 html 电子邮件

Posted

技术标签:

【中文标题】无法使用 laravel + mandrill 发送 html 电子邮件【英文标题】:Can't send html email with laravel + mandrill 【发布时间】:2015-08-24 18:13:14 【问题描述】:

我正在使用 Laravel 4.2 和 mandrill 插件。这样我可以使用 laravel 语法 (swiftmailer) 发送电子邮件,并且邮件由 mandrill 发送。但是,我似乎无法发送 html 消息。它们显示为内部带有 htmltags 的文本电子邮件。有什么问题?

    //Send email    
    $emailName = $_POST['emailName'];
    $emailAddress = $_POST['emailAddress'];
    $emailSubject = $_POST['emailSubject'];
    $emailMessage = html_entity_decode($_POST['emailMessage']);
    $emailFrom = $_POST['emailFrom'];
    $emailFromName = $_POST['emailFromName'];
    $pathToAttachement = $_POST['pathToAttachement'];

    $data = array('emailAddress' => $emailAddress, 'emailName' => $emailName, 'emailSubject' => $emailSubject, 'emailFrom' => $emailFrom, 'emailFromName' => $emailFromName, 'pathToAttachement' => $pathToAttachement);
    Mail::send('admin.emails.blank', array('msg' => $emailMessage), function($message) use ($data)
    
        $message->setContentType('text/html');
        $message->from($data['emailFrom'], $data['emailFromName']);
        $message->to($data['emailAddress'], $data['emailName'])->subject($data['emailSubject']);
        $message->attach($data['pathToAttachement']);

    );

【问题讨论】:

你能显示/admin/emails/blank.blade.php中的内容吗? 我只输出消息: $msg 我刚刚意识到我正在通过使用三个荣誉来逃避内容......感谢你的彼得姆。所以我把它改成了 $msg 现在工作正常。愚蠢的错误。 这正是我问你这个问题的原因 你为什么用$_POST而不是Input::get()?当 Laravel 的 Mail::send 有一个邮件 HTML 内容的参数时,你为什么要 setContentType('text/html')(默认是 HTML,如果你愿意,你可以 Mail::send(array('html.view', 'text.view'), $data, $callback);)? 【参考方案1】:

在您的 blank.blade.php 模板中,确保使用双花括号,以免内容转义

 $msg 

【讨论】:

以上是关于无法使用 laravel + mandrill 发送 html 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 不使用 mandrill 发送的电子邮件

如何使用 Mail::send() 获取 Mandrill 消息 ID - Laravel 4

Mandrill 能否将退回的邮件信息发送到发件人电子邮件

使用 Mandrill 和 Laravel 发送预定的电子邮件

尝试在 Laravel 5 上使用 mandrill 重置密码时出错

在对 mandril 的 api 调用中使用 laravel-view