Laravel框架下通过队列发送原始邮件的实现方法
无需View或Mailable队列发送原始邮件的方法
当然可以实现!在Laravel里,你完全不用创建Mailable类或者Blade视图,直接通过闭包结合队列发送方法就能搞定原始邮件的队列投递。
这里有两种常用的实现方式:
1. 直接使用Mail::queue闭包
这是最直接的方式,把邮件的构建逻辑写到闭包里,Laravel会自动将这个任务推入队列:
Mail::queue(function ($message) { $message->subject('Email de test') ->to('test@example.org') ->setBody('bonjour', 'text/plain'); // 第二个参数可选,默认就是纯文本类型 });
2. 延迟队列发送(可选)
如果需要延迟一段时间再发送,用Mail::later代替Mail::queue即可:
// 延迟5分钟发送邮件 Mail::later(now()->addMinutes(5), function ($message) { $message->subject('Email de test') ->to('test@example.org') ->setBody('bonjour'); });
注意事项
- 确保你的队列配置正确:检查
.env文件中的QUEUE_CONNECTION,不要设置为sync(这是默认值,会同步发送,不会进入队列),可以改成database、redis等适合你的队列驱动。 - 闭包里的逻辑和你用
Mail::raw的逻辑完全一致,都是直接设置邮件的核心内容,没有额外的依赖。
内容的提问来源于stack exchange,提问作者rap-2-h
相关产品推荐
相关产品推荐

