php - 如何在 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
下面发送电子邮件,但从 .env 文件中获取配置。
\Mail::to($firmAdminEmail->admin_email)->send(new AdminLeadAccept($acceptLink));
解决方案
如果这没有帮助,那么我认为您应该.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
. _
推荐阅读
- c# - 是否存在每次启动应用程序时都不会重置的变量?
- java - 在简单的Java程序中努力应用继承概念
- pyspark - 我们如何修复 ADLS Gen 2 中的增量位置文件
- azure - Azure 管道 - 在容器中执行阶段之一
- flutter - Flutter 中的大数据列表会导致性能不佳吗?
- c++ - 在 Visual Studio 中返回静态变量会引发错误
- java - 如何从 jTextField 文本更改 jButton 文本?
- python - 如何使用pptx python在同一个表格单元格中使用两种不同的字体样式和字体属性?
- c# - 如何根据 MVC 5 中的用户角色更改 url 中的区域名称
- php - XERO PHP SDK - Createinvoiceattachment 抛出 401 Unauthorized 错误