问题描述
我正在开发Lumen 6.0,遇到了一个非常奇怪的问题。
我正在尝试使用我的可邮件类上的ShouldQueue在可邮件队列中发送电子邮件,但是似乎邮件通常不会通过队列发送,因为ShouldQueue应该自动处理所有电子邮件。我正在使用雄辩的观察员来检测事件,然后发送电子邮件
我的观察者
use App\Contact;
use App\Mail\ContactMail;
use Illuminate\Support\Facades\Mail;
class ContactObserver
{
/**
* Handle the Account "created" event.
*
* @param Contact $contact
* @return void
*/
public function created(Contact $contact)
{
if (env('MAIL_ENABLED')) // boolean value in .env
Mail::to(['abc@example.com'])->send(new ContactMail($contact));
}
}
我的可邮寄邮件
use App\Contact;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class ContactMail extends Mailable implements ShouldQueue
{
use Queueable,SerializesModels;
public $contact;
/**
* Create a new message instance.
*
* @param Contact $contact
*/
public function __construct(Contact $contact)
{
$this->contact = $contact;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject("Contact - " . config('app.name'))->from(config('mail.from'))->markdown('emails.contact.new');
}
}
我的服务提供商
use App\Contact;
use App\Observers\ContactObserver;
use Illuminate\Contracts\Container\BindingResolutionException;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
* @throws BindingResolutionException
*/
public function boot()
{
Schema::defaultStringLength(191);
$this->app->make('queue'); // without this i get >> Argument 1 passed to Illuminate\Mail\Mailable::queue() must be an instance of Illuminate\Contracts\Queue\Factory,null given,called in /var/www/html/vendor/illuminate/mail/Mailer.PHP on line 388
Contact::observe(ContactObserver::class);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)