Laravel 8 настраиваемые сведения smtp для каждого задания уведомления

#php #laravel #email

Вопрос:

В настоящее время я разрабатываю приложение Laravel, в котором разные пользователи могут подписываться на отправку электронных писем пользователям.

Пример: Компания А имеет учетную запись и хранит данные SMTP в базе данных. Компания B также имеет учетную запись и хранит данные SMTP в базе данных.

У каждой компании есть свой собственный набор данных о клиентах (особенно электронные письма).

Для отправки электронных писем я использую среду уведомлений Laravel.

Если компания А теперь хочет отправить уведомление всем клиентам, я не хочу использовать данные SMTP файла .env. И компания B также должна отправлять свои собственные данные.

Вот обзор файлов в разделе «рабочий процесс»:

AnnouncementController.php:

 (...)

    dispatch(new SendNewAnnouncementNotificationJob($announcement));

(...)
 

SendNewAnnouncementNotificationJob.php

 (..)

     Notification::route('mail', $subscriber->email)
    ->notify((new NewAnnouncement($announcement)));

(..)
 

NewAnnouncement.php

    (...)
     
    use IlluminateContractsQueueShouldQueue;
    (...)
    
    class NewAnnouncement extends Notification implements ShouldQueue
    {
    
    (...)

 use Queueable;

(...)
    public function toMail($notifiable)
        {
    
            return (new MailMessage)
                 ->from($this->announcement['sender_name'])
                ->subject('New Announcement at '.$this-> announcement['pagename'].'')
                        ->line($announcement['text'])
                        ->line('Thank you for using our application!');
        }

(..)
 

В какой момент я мог бы теперь хранить отдельные данные SMTP, особенно с учетом функции очереди?

Ответ №1:

Вам нужно будет определить еще двух почтовых отправителей внутри config/mail.php .

Они могут быть переключены по их имени; например. Mail::mailer('smtp-company01') .

Конфигурация жестко задана, но можно запросить имя отправителя.