【问题标题】:Laravel 8 custom smtp details per Notification Job每个通知作业的 Laravel 8 自定义 smtp 详细信息
【发布时间】:2021-10-21 19:12:13
【问题描述】:

我目前正在开发一个 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 Illuminate\Contracts\Queue\ShouldQueue;
    (...)
    
    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 详细信息,尤其是考虑到队列功能?

【问题讨论】:

    标签: php laravel email


    【解决方案1】:

    您必须在 config/mail.php 中再定义两个邮件程序。

    这些可以通过他们的名字来切换;例如。 Mail::mailer('smtp-company01').

    配置是硬编码的 - 但可以查询邮件程序的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 2019-11-17
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多