我看到很多使用“\ r \ n”的PHP电子邮件实现,但我也看到其中一些使用PHP_EOL常量。哪一个更好?
感谢任何帮助。大都会
答案 0 :(得分:16)
如果要终止电子邮件中的行,那么您需要查看的是电子邮件规范,而不是任何特定平台上使用的规范。
电子邮件中的行根据RFC2821
由CRLF(“\ r \ n”)终止SMTP命令,除非被a更改 服务扩展,消息数据, 以“线”传输。行 由零个或多个数据组成 由序列终止的字符 ASCII字符“CR”(十六进制值0D) 紧接着是ASCII 字符“LF”(十六进制值0A)。这个 终止序列表示为 在这份文件中。符合 实现绝不能识别或 生成任何其他角色或 字符序列为一行 终止子
这似乎很清楚,在电子邮件中,行尾将以\ r \ n发送。发送任何其他内容可能会有效,但除非您使用“服务扩展”,否则它是错误的,如果您是,那么您可能知道您应该发送什么。
答案 1 :(得分:1)
只是为了确保:
PHP_EOL
对接收方方面的电子邮件不起作用。它将使用运行PHP脚本的系统中常见的新行字符组合。
因此,如果你有Linux / Unix服务器,PHP_EOL
将导致\n
,如果你有Windows服务器,它将是\r\n
。
今天,你使用的并且我认为大多数Windows电子邮件应用程序也可以处理\n
并不重要(afaik甚至WordPad理解这一点,它是记事本问题)。
答案 2 :(得分:0)
\r\n
是Windows换行符,如果您的客户主要是Windows用户,那么这对您没问题。
我也相信大多数非Windows电子邮件客户端都会对此进行补偿,所以\r\n
不应该是Mac或* Nix上的问题。