PHP mail()文档说我应该只在体内使用LF,但RFC 5322则另有说法。

时间:2011-07-25 21:52:14

标签: phpmailer php rfc5322

PHP手册(http://php.net/manual/en/function.mail.php)说:

  

每行应使用LF(\ n)分隔。线不应该   大于70个字符。

但实际的RFC 5322给出了完整的不同信息:

  

2.3。正文消息的正文只是US-ASCII的行   字符。身体上唯一的两个限制如下:
  o CR和LF必须一起作为CRLF出现;它们不得出现         独立于体内。 o正文中的字符行   必须限制为998个字符,         并且应该限制在78个字符以外,不包括CRLF。

所以 - RFC说只应该使用\ r \ n。 我不明白 - php mail()如何在后台运行?

2 个答案:

答案 0 :(得分:2)

显然,PHP mail()必须在后台将\n转换为\r\n

这类似于Perl's practice使用\n来表示“逻辑”换行符,然后根据操作系统在内部进行翻译。由于PHP部分受到Perl的启发,因此PHP中存在类似的机制并不奇怪。

答案 1 :(得分:1)

  

php mail()如何在后台运行?

正如您对cionfiguration所期望的那样。默认情况下,它只是大多数系统上sendmail二进制文件的包装器,以及指定SMTP主机的非常简单的MUA。前者使用LF作为其输入结束的行,后者需要CRLF作为其输出 - 因为行结束因操作系统而异,PHP为邮件提供统一的行结束(LF)