Luc*_*ano 2 php swiftmailer mail-queue laravel
我正在尝试为我的应用程序的每个用户使用不同的SMTP配置。因此,使用Swift_SmtpTransport设置新的传输实例,将其分配给Swift_Mailer,然后将其分配给Laravel Mailer。
在完整代码段下方:
$transport = Swift_SmtpTransport::newInstance($mailConfig['smtp_host'], $mailConfig['smtp_port'], 'ssl');
$transport->setUsername($mailConfig['smtp_user']);
$transport->setPassword($mailConfig['smtp_pass']);
$smtp = new Swift_Mailer($transport);
Mail::setSwiftMailer($smtp);
Mail::queue(....);
Run Code Online (Sandbox Code Playgroud)
消息已添加到队列中,但从未调度。我猜想因为“真实”发送是异步的,所以它使用默认的SMTP配置,而不是Mail :: queue()之前的传输设置。
所以,问题是:使用Mail :: queue()时如何更改邮件传输方式?
而不是使用Mail::queue,请尝试创建一个用于处理发送电子邮件的队列作业类。这样,将在处理作业时执行传输切换代码。
该作业类结构文档实际使用邮件场景为例,其接收一个Mailer实例,你可以操纵。只需在类的handle方法中使用您的代码即可:
public function handle(Mailer $mailer)
{
$transport = Swift_SmtpTransport::newInstance($mailConfig['smtp_host'], $mailConfig['smtp_port'], 'ssl');
$transport->setUsername($mailConfig['smtp_user']);
$transport->setPassword($mailConfig['smtp_pass']);
$smtp = new Swift_Mailer($transport);
$mailer->setSwiftMailer($smtp);
$mailer->send('viewname', ['data'], function ($m) {
//
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1143 次 |
| 最近记录: |