PHP电子邮件中“from”标题字段的最佳实践,以防止标记为垃圾邮件

时间:2012-01-25 18:34:08

标签: php email spam-prevention

我正在制作一个允许用户向他们的朋友发送电子邮件的表单。表单将包含以下字段:

  • 来自电子邮件
  • 发送电子邮件
  • 主题

理想情况下,电子邮件标题中的“来自”字段 将是用户输入的“来自电子邮件”地址,以便收件人识别发件人。

但我认为,当用户输入“来自电子邮件”地址时,在标题中设置“来自”字段将无法SPF验证并增加电子邮件被标记为垃圾邮件的可能性。

什么是最佳做法:

  1. 允许电子邮件显示(发件人)来自发件人的“来自电子邮件”
  2. 降低电子邮件被标记为垃圾邮件的可能性。
  3. 快速抽查,

    • 纽约时报“电子邮件文章”功能将标题中的“发件人”字段设置为发件人的电子邮件地址,最终收录在我的Yahoo收件箱中。
    • AddThis将标题中的“from”字段设置为发件人的电子邮件地址,最后放入我的Yahoo垃圾邮件文件夹。
    • Delicious将标题中的“from”字段设置为“Delicious”,最后放入我的Yahoo收件箱。

1 个答案:

答案 0 :(得分:6)

如果您的域名是example.com,则来自表单的外发电子邮件中的FROM标头必须类似于info@example.com或noreply@example.com

将REPLY-TO标题设置为"来自"您的用户在表单上输入的地址。

让收件人识别&#34; FROM&#34;地址,您可以将发件人姓名放在FROM标头中,这样当收件人看到电子邮件进来时,它会说出"John Smith <noreply@example.com>"

的内容。

由于您使用的是PHP,我建议您查看Swiftmailer。除了为构建和格式化电子邮件提供了很棒的方法之外,它还可以帮助您避免许多常见的标题问题。

官方Swiftmailer网站:http://swiftmailer.org/

您的代码可以像以下一样简单:

$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance()
    ->setSubject('This is the subject of your message')
    ->setFrom(array('noreply@example.com' => 'John Smith'))
    ->setReplyTo(array('john.smith@gmail.com' => 'John Smith'))
    ->setTo(array('recipient@example.com'))
    ->setBody('The body of your email goes here.');

$mailer->send($message);