无法使用 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 和 Laravel 发送预定的电子邮件