在Lumen Jobs中发送邮件时出现BindingResolutionException
问题描述:
I have no problem sending synchronous mails, but the ones that get executed on a queue using Mail::queue throw the next error:
Illuminate\Contracts\Container\BindingResolutionException: Target [Swift_Transport] is not instantiable while building [Illuminate\Mail\Mailer, Swift_Mailer]. in /var/www/myapp.dev/vendor/illuminate/container/Container.php:804
Everything is configured correctly as emails are being sent when I do it synchronously
我发送同步邮件没有问题,但是使用Mail :: queue在队列上执行的邮件会抛出同步邮件 下一个错误: p>
Illuminate \ Contracts \ Container \ BindingResolutionException:构建[Illuminate \ Mail \ Mailer,Swift_Mailer]时,目标[Swift_Transport]不可实例化。 在/var/www/myapp.dev/vendor/illuminate/container/Container.php:804
nn当我发送电子邮件时,所有内容都配置正确 同步 p> div>
答
After having so much trouble with sending emails inside of Lumen Jobs, I encapsulated the email sending in a Job which works with mailables like this:
MailDispatcher.php
<?php
namespace App\Jobs;
use Illuminate\Contracts\Mail\Mailable;
use Illuminate\Support\Facades\Mail;
class MailDispatcher extends Job {
public $mail;
public function __construct(Mailable $mail) {
$this->mail = $mail;
}
public function handle() {
Mail::send($this->mail);
}
}
Then when I want to queue a mail...
$mail = new MyMailableMail($user);
dispatch(new MailDispatcher($mail));
And it works correctly