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

PHP邮件发送问题:邮件正文中的邮箱地址格式异常

PHP邮件发送问题:邮件正文中的邮箱地址格式异常

嘿,我之前也碰到过类似的问题!看起来你遇到的是邮件客户端自动解析邮箱地址时的误判问题——像Outlook、Gmail这类客户端会自动识别文本里的邮箱并转成可点击链接,但有时候它们的解析逻辑会抽风,把邮箱里的字符误当成分隔符,导致地址被拆得乱七八糟。

先看你代码里输出邮箱的这一行:

$message .= '<p style="text-align:left; font-family:Arial, Helvetica, sans-serif; font-size:17px; font-weight:normal;">'. $_SESSION["sp_email"] .'</p>';

你直接把Session里的邮箱纯文本输出到HTML邮件里,没有做任何处理,这就给了邮件客户端乱解析的机会。给你几个靠谱的解决办法:

方法1:明确用mailto链接包裹邮箱

把邮箱放到<a>标签里,明确告诉客户端这是个邮件链接,它就不会乱拆了,同时记得用htmlspecialchars转义,防止邮箱里的特殊字符破坏HTML结构:

$email = htmlspecialchars($_SESSION["sp_email"]);
$message .= '<p style="text-align:left; font-family:Arial, Helvetica, sans-serif; font-size:17px; font-weight:normal;"><a href="mailto:'. $email .'">'. $email .'</a></p>';

方法2:强制不让邮箱换行/拆分

如果你不想把邮箱做成链接,就用CSS的white-space: nowrap或者<nobr>标签强制让邮箱保持一行,避免被拆分:

$email = htmlspecialchars($_SESSION["sp_email"]);
// 用CSS样式的写法
$message .= '<p style="text-align:left; font-family:Arial, Helvetica, sans-serif; font-size:17px; font-weight:normal;"><span style="white-space: nowrap;">'. $email .'</span></p>';

// 或者用<nobr>标签(兼容性也不错)
$message .= '<p style="text-align:left; font-family:Arial, Helvetica, sans-serif; font-size:17px; font-weight:normal;"><nobr>'. $email .'</nobr></p>';

额外检查点

别忘了先确认$_SESSION["sp_email"]里的内容本身是正确的!可以在发送邮件前加一行调试代码:

var_dump($_SESSION["sp_email"]);
exit;

看看输出的邮箱有没有多余的空格或者奇怪字符——万一问题出在Session存入的时候呢?

另外,HTML邮件里所有动态输出的内容都建议用htmlspecialchars转义,这不仅能避免这类格式问题,还能防止XSS安全风险,算是PHP开发的最佳实践啦。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 12:08:04