2012-03-29 53 views
4

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

$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,它似乎是找到一个传递错误?但不是用于将邮件发送到反弹邮件帐户?

回答

5

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

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

+0

谢谢,虽然它不允许,但在标题中有两个返回路径。这对其他提供者是否一样,如果不是,我如何使用verp? (Verp是检查失败receipent邮件,它使用返回路径,但返回路径是发送回弹的地址,它们如何共存?谢谢) – 2012-03-29 12:42:17

+0

其他提供者(尤其是邮件提供者,如邮件黑猩猩,等)应该能够让你设置返回路径。但是,最好在提交之前对它们进行测试。对于VERP的工作,你可以将它设置为使用发送电子邮件的帐户来接收反弹? – F21 2012-03-29 12:46:55

+0

只需设置它使用发送电子邮件的帐户来接收反弹。 <==这有一个问题,因为receipent可能回复我,他们会发送邮件到这个帐户。 – 2012-03-29 12:59:24

0

这不是一个Gmail的问题,它的SMTP规范的要求,如RFC 5321 section 4.4定义:

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

它还说,而在所有的SMTP系统不应检查邮件内容(即不看标题),网关从其他方面来SMTP 应该删除任何返回路径头。简而言之,如果你自己添加一个返回路径头,你做错了。

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

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

相关问题