#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')
.
Конфигурация жестко задана, но можно запросить имя отправителя.