避免PHP double To:标头

时间:2018-10-31 13:28:04

标签: php email-headers

我正在使用php邮件功能发送电子邮件。 我传递了to地址,还建立了一些其他电子邮件标题,包括发件人:和答复收件人:。

但是,到目前为止,我还一直在其他标题中包含To:标题。例如,我会将电子邮件“ user@email.com”传递给邮件功能,但除此之外,我还将在下面包含一个to标头作为标头的一部分。

 "To:Users Name <user@email.com>"

结果是php邮件在电子邮件中包含一个To:标头TWICE,一次包含电子邮件地址(传递到函数的第一个参数中),另一个则作为标头参数的一部分传递给php邮件。 / p>

TO: user@email.com
TO: Users Name <user@email.com>

结果,它被某些垃圾邮件系统阻止。

所以有几个问题:

  • 包括具有收件人名称和电子邮件的完整的To:标头,而不是没有收件人名称的TO:标头“ user@gmail.com”,会有什么真正的好处。

  • 是否有理由不将完整的标头(即名称和电子邮件)传递到mail函数的第一个参数中,而是将其保留在附加的标头参数之外?

在这里寻找正确的方法。 谢谢

1 个答案:

答案 0 :(得分:1)

是否有真正的好处,包括完整的To:标头,其中包含  收件人的姓名和电子邮件,而不是收件人的:  没有收件人名称的“ user@gmail.com”?

是: 从RFC 2822 - Internet Message Format - 3.4. Address Specification

  

通常,邮箱由两部分组成:(1)可选   显示名称,该名称指示收件人的姓名(可以   可以是向用户显示的人或系统)   邮件应用程序,以及(2)用尖括号括起来的addr-spec地址   方括号(“ <”和“>”)。还有一种替代的简单形式   单独显示addr-spec地址的邮箱,没有
  收件人的姓名或尖括号。

有些电子邮件客户端将使用该格式来实际显示名称(而不是显示电子邮件地址),从而使用户更容易理解。正如您所看到的,仅使用单个地址可以看作是完全两个部分的替代方法。

是否有任何理由不将完整的标头(即名称和电子邮件)传递给mail函数的第一个参数,而将其忽略 额外的标头参数?

否,您只能使用第一个参数The mail() to-parameter complies with RFC 2822.