4

我正在使用 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,好像是定位到投递错误?但不是将邮件发送到退回邮件帐户?

4

2 回答 2

7

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

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

于 2012-03-29T12:39:45.057 回答
3

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

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

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

您在收到的邮件中看到的返回路径标头是由接收者创建的,而不是发件人,并且派生自MAIL FROM用于传递邮件的 SMTP 命令。此地址无需与消息中的 From 地址标头有任何共同之处,并指定在传递失败的情况下应将消息发送到的位置,即您想要 VERP 地址的确切位置。

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

于 2016-09-07T06:57:06.803 回答