Разве 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
свойство, и получатель преобразует это в заголовок сообщения обратного пути при получении.