Laravel Mailables 作业,通用对象
Laravel job for Mailables, common object
我创建了一个用于发送电子邮件的 Laravel 作业,并且我有多个 class 继承自 Mailable
。
我的工作class:
class SendMail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $emailObject;
public function __construct($emailObject)
{
$this->emailObject = $emailObject;
}
public function handle()
{
\Mail::to($this->emailObject->user->email)->queue($this->emailObject);
}
}
我执行这个:
$this->dispatch(new SendMail(new Profile($user)));
或
$this->dispatch(new SendMail(new Newsletter($user)));
我想创建一个对象或模式,这样我就可以在我的工作中用一个对象创建一个 constructor
。像这样:
class SendMail{
public function __construct(CommonMailObject $emailObject)
{
$this->emailObject = $emailObject;
}
}
例如。个人资料 class:
class Profile extends Mailable
{
use Queueable, SerializesModels;
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function build()
{
return $this->from('', '')
->subject('')
->view(EmailType::PROFILE);
}
}
您应该声明您的 SendMail
class 依赖于 Mailable
对象。
例如:
class SendMail{
public function __construct(Mailable $mailable)
{
$this->emailObject = $mailable;
}
}
这样你就可以同时做到:
$this->dispatch(new SendMail(new Profile($user)));
和
$this->dispatch(new SendMail(new Newsletter($user)));
在 Mailable class 中大多数属性是 public。要获取地址,您需要获取 to
属性,这是一个数组(因为它可以处理多个电子邮件地址)。
所以您只需访问:
$this->emailObject->to
没有测试过,但是可能:
\Mail::to($this->emailObject->to)->queue($this->emailObject);
应该可以。
我会把 fine-tuning 留给你。
我创建了一个用于发送电子邮件的 Laravel 作业,并且我有多个 class 继承自 Mailable
。
我的工作class:
class SendMail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $emailObject;
public function __construct($emailObject)
{
$this->emailObject = $emailObject;
}
public function handle()
{
\Mail::to($this->emailObject->user->email)->queue($this->emailObject);
}
}
我执行这个:
$this->dispatch(new SendMail(new Profile($user)));
或
$this->dispatch(new SendMail(new Newsletter($user)));
我想创建一个对象或模式,这样我就可以在我的工作中用一个对象创建一个 constructor
。像这样:
class SendMail{
public function __construct(CommonMailObject $emailObject)
{
$this->emailObject = $emailObject;
}
}
例如。个人资料 class:
class Profile extends Mailable
{
use Queueable, SerializesModels;
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function build()
{
return $this->from('', '')
->subject('')
->view(EmailType::PROFILE);
}
}
您应该声明您的 SendMail
class 依赖于 Mailable
对象。
例如:
class SendMail{
public function __construct(Mailable $mailable)
{
$this->emailObject = $mailable;
}
}
这样你就可以同时做到:
$this->dispatch(new SendMail(new Profile($user)));
和
$this->dispatch(new SendMail(new Newsletter($user)));
在 Mailable class 中大多数属性是 public。要获取地址,您需要获取 to
属性,这是一个数组(因为它可以处理多个电子邮件地址)。
所以您只需访问:
$this->emailObject->to
没有测试过,但是可能:
\Mail::to($this->emailObject->to)->queue($this->emailObject);
应该可以。
我会把 fine-tuning 留给你。