我目前正在开发一个Laravel应用程序,不同的用户可以注册向用户发送电子邮件。
的例子:公司A有一个帐户,并在数据库中存储SMTP详细信息。公司B也有一个帐户,并在数据库中存储SMTP详细信息。
每个公司都有自己的客户数据集(尤其是电子邮件)
我使用Laravel的通知环境来发送电子邮件。
如果公司A现在想要向所有客户发送通知,我不想使用.env文件的SMTP详细信息。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详细信息,特别是考虑到队列函数?
您必须在config/mail.php
中定义另外两个邮件。
可以通过它们的名称来切换;如。Mail::mailer('smtp-company01')
.
配置是硬编码的,但是可以查询邮件的名称。