首页 > 解决方案 > 如何在 laravel 中配置多封邮件

问题描述

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

问题:在 .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

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

\Mail::to($firmAdminEmail->admin_email)->send(new AdminLeadAccept($acceptLink));

标签: phplaravelemailsmtp

解决方案


如果没有帮助,那么我认为您应该.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,
],

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

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

// Or

Mail::mailer('sales')
    ->to($request->user())
    ->send(new OrderShipped($order));

阅读有关mailer. _


推荐阅读