Laravel Mailer с новым Swift_Mailer отображается как неправильный домен отправителя в Gmail - PullRequest
0 голосов
/ 11 июля 2019

Я хочу отправлять письма из разных аккаунтов в моем приложении Laravel.

Поэтому я создал новый swiftmailer транспорт

// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.example.org', 25))
  ->setUsername('your username')
  ->setPassword('your password')
;

// Create the Mailer using your created Transport
$swift_mailer = new Swift_Mailer($transport);

Когда я отправляю сообщение прямо из Swift_Mailer объекта

// Create a message
$message = (new Swift_Message('Wonderful Subject'))
  ->setFrom(['john@doe.com' => 'John Doe'])
  ->setTo(['receiver@domain.org', 'other@domain.org' => 'A name'])
  ->setBody('Here is the message itself')
  ;

// Send the message
$result = $swift_mailer->send($message);

Я получаю письмо, которое фактически отправляется с моего почтового сервера:

enter image description here

Однако, когда я отправляю письмо от Laravel Mailer (как объяснено здесь ), используя тот же Swift_Mailer объект сверху:

$view = app()->get('view');
$events = app()->get('events');
$mailer = new \Illuminate\Mail\Mailer($view, $swift_mailer, $events);
$mailer->alwaysFrom('john@doe.com', 'John Doe');
$mailer->alwaysReplyTo'john@doe.com', 'John Doe');

$mailer->to('my_email@test.com')->send(new \App\Mail\Test);

затем в Gmail появляется сообщение, что письмо не было отправлено с моего почтового сервера:

enter image description here

Когда я нажимаю на детали, это говорит мне, что

Домен отправителя отличается от домена в адресе «От:».

Я на самом деле владею обоими доменами. В моем файле .env адрес FROM ****.com, и я хотел создать новое письмо с адреса ****.net.

Почему Gmail считает, что я отправил письмо через мой ****.com адрес, если использую класс Laravel Mailer?

Примечание: это не дубликат нескольких почтовых конфигураций - это то, где я начал искать, но 5-летний ответ не совсем работал, и я дал это ответ , но я застрял с вышеописанной проблемой.

1 Ответ

0 голосов
/ 11 июля 2019

Я решил это следующим образом:

Сначала я сравнил заголовок обеих писем, я понял, что в письме с использованием объекта Mailer у меня был адрес ответа с доменом ***.com.

spf=pass (google.com: domain of respond@****.com designates **** as
permitted sender) smtp.mailfrom=respond@****.com Return-Path: <respond@***.com>

Затем я проверил класс Mailer (задним числом, я удивляюсь, почему я не посмотрел здесь сначала ...), и я нашел следующий фрагмент, который я добавил несколько месяцев назад:

 $this->withSwiftMessage(function ($message) {
          $message->getHeaders()
                  ->addTextHeader('Return-Path', 'respond@****.net');
 });

Так что мне просто нужно было удалить его, теперь все работает.

Итак, я был убежден, что проблема была в классе Mailer, но это было просто в методе сборки Mailable, которыйЯ использовал.

...