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

如何在PHPMailer邮件HTML内容中正确显示PHP变量$otp的值?

如何在PHPMailer邮件HTML内容中正确显示PHP变量$otp的值?

嘿,我完全懂你现在遇到的困扰!问题出在你用单引号包裹邮件内容上——PHP的规则是:单引号里的变量不会被解析,只会原样输出字符串,所以邮件里才会显示$otp而不是它的实际值。

给你几个简单的解决办法,选一个适合你的就行:

方法一:改用双引号包裹内容

把外层的单引号换成双引号,同时注意把HTML属性里的双引号换成单引号(避免和外层双引号冲突),这样PHP就会自动解析里面的$otp变量了:

$mail->Body = "<h2 style='background: #00466a;margin: 0 auto;width: max-content;padding: 0 10px;color: #fff;border-radius: 4px;'>$otp</h2>";

如果你不想换HTML里的双引号,也可以用反斜杠转义:\",不过换成单引号会更清爽。

方法二:字符串拼接

把HTML内容拆成前后两部分,用.连接符把$otp变量插进去,这样单引号包裹的HTML部分原样输出,变量部分会被解析成实际值:

$mail->Body = '<h2 style="background: #00466a;margin: 0 auto;width: max-content;padding: 0 10px;color: #fff;border-radius: 4px;">' . $otp . '</h2>';

方法三:使用HEREDOC语法(适合复杂内容)

如果你的邮件内容很长,HEREDOC会让代码可读性更好,它支持直接解析变量,写法也很灵活:

$mail->Body = <<<HTML
<h2 style="background: #00466a;margin: 0 auto;width: max-content;padding: 0 10px;color: #fff;border-radius: 4px;">$otp</h2>
HTML;

⚠️ 注意:结尾的HTML;必须顶格写,不能有任何缩进,否则会报错哦。

另外要提一句,你定义$otp的代码是没问题的:rand(100000,999999)生成6位随机数,转成字符串也完全OK,问题就出在邮件内容的变量解析上~

备注:内容来源于stack exchange,提问作者Hary Hillary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 13:02:47