SMTP: изменить домен Message-ID при отправке писем с Laravel 5.7 (Swift Mailer) - PullRequest
0 голосов
/ 28 апреля 2019

Laravel 5.7 отправляет электронные письма с помощью Swift Mailer.

По умолчанию все отправленные электронные письма будут иметь заголовок Message-ID с доменом swift.generated (например, Message-ID: <90b9835f38bb441bea134d3ac815dd6f@swift.generated>).

Я хотел бы изменить домен swift.generated, например, на my-domain.com.

Как я могу изменить это для всех электронных писем?

1 Ответ

0 голосов
/ 26 июня 2019
  1. Отредактируйте файл config / mail.php и определите свой домен ближе к концу:
    'domain' => 'yourdomain.com',
В командной строке создайте новый слушатель:
    php artisan make:listener -e 'Illuminate\Mail\Events\MessageSending' MessageSendingListener
Отредактируйте вновь созданного слушателя и сделайте так, чтобы он выглядел следующим образом (НЕ реализуйте ShouldQueue):
    <?php
    /**
     * Set the domain part in the message-id generated by Swift Mailer
     */

    namespace App\Listeners;

    use Illuminate\Mail\Events\MessageSending;
    use Swift_Mime_IdGenerator;

    class MessageSendingListener
    {
        /**
         * Create the event listener.
         *
         * @return void
         */
        public function __construct()
        {
            //
        }

        /**
         * Handle the event.
         *
         * @param  MessageSending  $event
         * @return void
         */
        public function handle(MessageSending $event)
        {
            $event->message->setId((new Swift_Mime_IdGenerator(config('mail.domain')))->generateId());
        }
    }
Зарегистрируйте слушателя в приложении / Providers / EventServiceProvider:
        protected $listen = [

           // [...]

            \Illuminate\Mail\Events\MessageSending::class => [
                 \App\Listeners\MessageSendingListener::class,
            ],
         ];

Вот и все, наслаждайтесь!:)

...