在Lumen Jobs中发送邮件时出现BindingResolutionException

在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