如何在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
相关产品推荐
相关产品推荐

