You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel发送邮件显示纯HTML代码的问题求助

解决Laravel发送邮件显示纯HTML代码的问题

问题原因分析

邮件显示纯HTML代码而非渲染页面,通常由以下原因导致:

  • 邮件模板中的HTML标签被转义(用&lt;代替<等实体字符)
  • 模板变量使用了自动转义的输出语法
  • 邮件Content-Type未正确设置为HTML格式

解决方案

1. 还原邮件模板的原始HTML

你的模板代码里所有HTML标签都被转义成了实体字符(如&lt;html&gt;),这会让邮件客户端将其识别为纯文本。需要把转义字符还原为原始HTML标签:

  • 将&lt;替换为<
  • 将&gt;替换为>
  • 将&quot;替换为"

修正后的模板开头示例:

<!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]);
}

验证步骤

  1. 修正模板后测试发送邮件
  2. 查看邮件源代码,确认Content-Type为text/html
  3. 检查邮件内容是否正常渲染为页面元素

内容的提问来源于stack exchange,提问作者S.M_Emamian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:15:58