Разве Gmail не позволяет отправителю устанавливать значение пути возврата для получения отказов? - PullRequest
4 голосов
/ 29 марта 2012

Я использую 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 ]

5 голосов
/ 29 марта 2012

Да, это нормально. При отправке электронной почты через SMTP-серверы Gmail обратным путем будет учетная запись, с которой вы отправляете.

Ваше единственное решение - это поиск провайдера, который позволяет вам установить обратный путь.

2 голосов
/ 07 сентября 2016

Это не проблема Gmail, это требование спецификации SMTP, как определено в RFC 5321 раздел 4.4 :

Система SMTP, отправляющая сообщения, НЕ ДОЛЖНА отправлять сообщение, которое уже содержит поле заголовка Return-path.

В нем также говорится, что хотя SMTP-системы вообще не должны проверять содержимое сообщения (то есть они не смотрят заголовки), шлюз из какого-либо другого контекста в SMTP СЛЕДУЕТ удалить любой заголовок пути возврата. Короче говоря, если вы добавляете заголовок return-path самостоятельно, вы делаете это неправильно.

Заголовок обратного пути, который вы видите в полученном сообщении, создается получателем, не отправителем, и получен из команды SMTP MAIL FROM, используемой для доставки сообщения. Этот адрес не должен иметь ничего общего с заголовком адреса отправителя в сообщении и указывает, куда следует отправлять сообщение в случае сбоя доставки, т. Е. Именно то, для чего вы хотите использовать адрес VERP.

Я не знаю о SwiftMailer, но в PHPMailer вы можете установить значение отправителя конверта SMTP, установив свойство Sender, и получатель преобразует его в заголовок сообщения обратного пути при получении.

...