如何在 Laravel 中配置多个电子邮件

Bam*_*mme 2 php email smtp laravel

如何在我的 Laravel 应用程序中使用多个来自电子邮件的配置?

  • 场景#1:我想使用 sales@mywebsite.com 电子邮件发送所有与账单相关的电子邮件
  • 场景#2:我想使用 support@mywebsite.com 电子邮件来发送所有通知和其他场景。

问题:在 .env 文件中,我们只能配置一封电子邮件的 smtp 详细信息。如何使用多个电子邮件帐户并将其凭据用于不同的场景。

我的 .env smtp 设置

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxxxxxxxx
MAIL_PASSWORD=xxxxxxxxxxxxx
MAIL_FROM_ADDRESS=sales@mywebsite.com
MAIL_FROM_NAME="Sales"
MAIL_ENCRYPTION=TLS
Run Code Online (Sandbox Code Playgroud)

下面发送电子邮件,但从 .env 文件中获取配置。

\Mail::to($firmAdminEmail->admin_email)->send(new AdminLeadAccept($acceptLink));
Run Code Online (Sandbox Code Playgroud)

mat*_*iti 11

如果没有帮助,那么我认为你应该对.env每个配置进行如下配置:

  • MAIL_SALES_USERNAME,MAIL_SALES_PASSWORD
  • MAIL_SUPPORT_USERNAME,MAIL_SUPPORT_PASSWORD

然后在配置中你有这个mailers,所以你可以像这样添加新的“发件人” :

'sales' => [
    'transport' => 'smtp',
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_SALES_USERNAME'),
    'password' => env('MAIL_SALES_PASSWORD'),
    'timeout' => null,
    'auth_mode' => null,
],
'support' => [
    'transport' => 'smtp',
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_SUPPORT_USERNAME'),
    'password' => env('MAIL_SUPPORT_PASSWORD'),
    'timeout' => null,
    'auth_mode' => null,
],
Run Code Online (Sandbox Code Playgroud)

因此,在发送电子邮件之前,您只需选择/更改要用作发件人的人:

Mail::mailer('support')
    ->to($request->user())
    ->send(new SupportTicketGenerated($ticket));

// Or

Mail::mailer('sales')
    ->to($request->user())
    ->send(new OrderShipped($order));
Run Code Online (Sandbox Code Playgroud)

阅读有关 的文档mailer的这一部分。