Разве Gmail не позволяет отправителю устанавливать значение пути возврата для получения отказов?

Я использую 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 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам