Laravel 使用 HTML 元素发送电子邮件

Posted

技术标签:

【中文标题】Laravel 使用 HTML 元素发送电子邮件【英文标题】:Laravel Send Email with HTML Elements 【发布时间】:2015-01-30 11:05:27 【问题描述】:

我正在尝试在 Laravel 中使用 SMTP 发送电子邮件,一切都很好,但 html 元素出现在电子邮件正文中。

即,

我收到以下邮件

<h2>Welcome</h2><br><p>Hello user</p><br><p>Thanks</p>

代替

欢迎

你好用户

谢谢

这是我的代码:

我缺少什么使其应用于电子邮件的内容

$msg = "<h2>Welcome</h2><br><p>Hello user</p><br><p>Thanks</p>"
$message->setBody($msg);                            
$message->to('user@gmail.com');                         
$message->subject('Welcome Mail');                  

【问题讨论】:

试试message-&gt;setBody($msg, 'text/html'); 【参考方案1】:

试试这个……

    $msg = "Welcome 
    Hello user
    Thanks"
     $message->setBody($msg);                            
     $message->to('user@gmail.com');                         
     $message->subject('Welcome Mail');       

【讨论】:

我目前正在使用它,但我不能使用任何 div 或任何 html 标签对吗?.. 甚至没有 :( 当然!如果格式给您带来问题,请删除它!哈哈 你想要你的输出。【参考方案2】:

一种可能的解决方案是将 HTML 代码包装在 body 标记中。 也看看Laravel mail api。

【讨论】:

我在那里看到了 标签,但我应该在邮件功能中使用它吗? 我不太确定,但我猜你得到带有 html 标签的 msg 的原因是你的代码没有被包装为 HTML 模板。我建议使用标准 laravel 的方式。使用 html、head 和 body 标签创建一个完整的 html 模板并使用 Mail helper .$info = ['email'=>'user@gmail.com','name'=>'test user'];$data=['标题'=>'测试','信息'=>'测试']; Mail::send('emails.test', $data, function($message) 使用 ($info) $message->from('test@test.com, 'test'); $message->to($ user['email'], $user['name'])->subject('Welcome Mail'); );【参考方案3】:

您似乎想以 HTML 格式发送电子邮件:

mail($to, $subject, $message, $headers);

您必须使用$headers 参数。

最后一个参数,标头,对于函数来说是可选的,但在发送 HTML 电子邮件时是必需的,因为我们可以在这里传递 Content-Type 声明,告诉电子邮件客户端将电子邮件解析为 HTML。

Source

或者,如果您只想添加断线并留下 HTML 元素:

$msg = "Welcome \n Hello user \n Thanks"

【讨论】:

以上是关于Laravel 使用 HTML 元素发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

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

当我在 laravel 中发送邮件时发送 Html 标签

隐藏或替换电子邮件地址 mailto:Laravel

[麦先生]在Laravel框架里实现邮箱验证---发送邮件

laravel 发送邮件

使用 cPanel 和 Laravel 将电子邮件发送到程序