PHP使用mail函数发信时验证链接自动插入<br />的原因及解决方法
PHP发送验证邮件时链接自动插入
<br />标签问题原因及解决方案 问题原因
- 未声明邮件MIME类型是核心诱因:你的代码没有在邮件头中指定内容类型,邮件服务端或客户端会默认将内容中的换行符自动转换为
<br />标签,你在拼接$message时链接前后的换行被误插入到了链接字符串中,所以才会出现你没有手动写<br />但邮件里多出来该标签的情况。 - 两种展示形态差异的原因:邮件默认被按HTML格式解析,
<a>标签的href属性中的<br />会被URL编码为%3Cbr%20/%3E,而<a>标签的显示文本中的<br />会被渲染为换行效果,所以两者的展示形态不一致。
解决方案
在邮件头中添加MIME版本和内容类型声明即可解决,修改后的邮件头代码如下:
$headers = "From:noreply@example.com\r\nMIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n";
如果后续需要发送带HTML样式的邮件,可以将Content-type改为text/html,同时注意优化$message字符串的写法,去掉不必要的缩进和换行,也能从根源上避免换行被转换为<br />的问题。
内容的提问来源于stack exchange,提问作者GrayFish112
相关产品推荐
相关产品推荐

