使用PHP的mail()函数仅发送纯文本内容是否需要配置指定邮件头?
结论
你给出的两个头部不是发送纯文本邮件的必要项,具体说明如下:
- PHP原生
mail()函数默认就是发送纯文本格式邮件,完全不传入自定义headers参数也可以正常投递成功。默认会使用PHP配置文件中default_charset指定的编码(默认通常为UTF-8)。 - 你示例中的
Content-type:text/html;charset=UTF-8头不要在纯文本邮件场景使用,否则会导致邮件客户端将你的纯文本内容识别为HTML代码解析,若内容包含<>等特殊字符会出现显示异常。 MIME-Version: 1.0头仅在邮件包含多格式内容、附件等场景才是必须的,纯文本场景可以省略,加上也不会产生负面影响,对老旧邮件客户端的兼容性会更好。
如果需要避免纯文本内容出现乱码,建议显式指定纯文本的编码头,示例写法如下:
$to = '接收邮箱@example.com'; $subject = '纯文本邮件测试'; $message = '这是纯文本的邮件内容,不包含任何HTML代码'; // 仅添加纯文本编码头即可,也可以省略这行直接调用mail() $headers = "Content-Type: text/plain; charset=UTF-8" . "\r\n"; mail($to, $subject, $message, $headers);
内容的提问来源于stack exchange,提问作者Jihane Elberouhi
相关产品推荐
相关产品推荐

