Laravel发送邮件显示纯HTML代码的问题求助
解决Laravel发送邮件显示纯HTML代码的问题
问题原因分析
邮件显示纯HTML代码而非渲染页面,通常由以下原因导致:
- 邮件模板中的HTML标签被转义(用
<代替<等实体字符) - 模板变量使用了自动转义的输出语法
- 邮件Content-Type未正确设置为HTML格式
解决方案
1. 还原邮件模板的原始HTML
你的模板代码里所有HTML标签都被转义成了实体字符(如<html>),这会让邮件客户端将其识别为纯文本。需要把转义字符还原为原始HTML标签:
- 将
<替换为< - 将
>替换为> - 将
"替换为"
修正后的模板开头示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="viewport" content="width=device-width" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>آریانت</title> <!-- 后续样式和内容保持原始HTML格式 --> </head>
2. 正确输出含HTML的变量
如果$msg变量包含HTML内容,模板中{{ $msg }}会自动转义标签,需改用{!! $msg !!}原样输出:
<table class="table-body"> <tr> <td> {!! $msg !!} </td> </tr> </table>
3. 确认邮件Content-Type(可选)
Laravel的view()方法默认会设置HTML格式,若仍有问题,可在build()方法中明确指定:
public function build() { return $this->subject('finish service') ->view('emails.subscribers', ['msg' => $this->msg]); }
验证步骤
- 修正模板后测试发送邮件
- 查看邮件源代码,确认Content-Type为
text/html - 检查邮件内容是否正常渲染为页面元素
内容的提问来源于stack exchange,提问作者S.M_Emamian
相关产品推荐
相关产品推荐

