Gmail是否允许发件人设置返回路径值以接收退回邮件?

时间:2012-03-29 12:32:05

标签: php gmail swiftmailer bounce

我正在使用Swift Mailer检查退回邮件。我为退回邮件创建了一个单独的帐户,但是当我设置返回路径时,它不允许将退回邮件发送到该帐户。这是正常还是代码错误?

$verp = 'bounces-' . str_replace('@', '=', $row['ReplyTo']) . '@gmail.com';

$message = Swift_Message::newInstance()
  ->setSubject($row['Subject'])
  ->setFrom(array($row['ReplyTo'] => $row['FromName']))
  ->setReturnPath($verp)
  ->setBody($html, 'text/html')
  ->addPart($txt, 'text/plain');

我现在正在使用VERP,它似乎是找到一个传递错误?但是不是要将邮件发送到退回邮件帐户?

2 个答案:

答案 0 :(得分:5)

是的,这是正常的。通过Gmail的SMTP服务器发送电子邮件时,它会强制将返回路径作为您发送的帐户。

您唯一的解决方案是搜索允许您设置返回路径的提供程序。

答案 1 :(得分:2)

这不是gmail问题,它是SMTP规范的要求,如RFC 5321 section 4.4中所定义:

  

发起消息的SMTP系统不应发送已包含返回路径标头字段的消息。

它还说虽然SMTP系统根本不应该检查消息内容(即它们不查看标题),但是从某个其他上下文到SMTP 应该的网关会删除任何返回路径头。简而言之,如果你自己添加一个返回路径标题,那你就错了。

您在收到的消息中看到的返回路径标头由接收方创建,发送方,并且是从用于传递消息的SMTP MAIL FROM命令派生的。该地址不需要与消息中的From地址头有任何共同之处,并指定在发送失败时应将消息发送到的位置,即您想要VERP地址的位置。

我不了解SwiftMailer,但在PHPMailer中,您可以通过设置Sender属性来设置SMTP信封发件人值,接收者会在接收时将其转换为返回路径邮件头。