rap*_*2-h 5 php laravel laravel-5 laravel-5.5
出于测试目的,我想通过队列发送原始邮件。
我可以发送这样的原始邮件:
Mail::raw('bonjour', function($message) {
$message->subject('Email de test')
->to('test@example.org');
});
Run Code Online (Sandbox Code Playgroud)
但是有没有办法通过队列发送原始邮件(不创建视图或可邮寄)?
我搜索了过去几天没有任何结果来完成这个:可以排队的原始邮件。
不幸的是,我没有找到不使用 Mailables 和 Views 的解决方案。
我假设您和我有同样的原因:您想从字符串发送 100% 动态生成的邮件。
我的解决方案是:
<?php echo $content;$this->content$message->为$thispublic function send(Request $request) {
$to = "test@example.org";
$subject = "email de test";
$content = "bonjour";
Mail::send(new RawMailable($to, $subject, $content));
}
Run Code Online (Sandbox Code Playgroud)
查看(/ressources/view/emails/raw.blade.php):
{!! $content !!}
Run Code Online (Sandbox Code Playgroud)
可邮寄:
<?php
namespace App\Mail;
use Dingo\Api\Http\Request;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class RawMailable extends Mailable
{
use Queueable, SerializesModels, ShouldQueue;
private $mailTo;
private $mailSubject;
// the values that shouldnt appear in the mail should be private
public $content;
// public properties are accessible from the view
/**
* Create a new message instance.
*
* @param LayoutMailRawRequest $request
*/
public function __construct($to, $subject, $content)
{
$this->content = $content;
$this->mailSubject = $subject;
$this->mailTo = $to;
}
/**
* Build the message.
*
* @throws \Exception
*/
public function build()
{
$this->view('emails.raw');
$this->subject($this->mailSubject)
->to($this->mailTo);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用dispatch辅助函数将 Closure 推送到 Laravel 作业队列:
dispatch(function () use ($name) {
Mail::raw('bonjour ' . $name, function($message) {
$message->subject('Email de test')
->to('test@example.org');
});
});
Run Code Online (Sandbox Code Playgroud)