[英]Sending a mail without `to` method in Laravel
我想通过laravel发送邮件。 出于某种原因,我只想在调用send
方法之前设置cc
:
Mail::cc($cc_mail)->send(new MyMailAlert());
然后我直接在我的Mailable类的build
方法中定义收件人( to
):
$this->subject($subject)->to($to_email)->view('my-mail');
但它失败了:
Symfony \\ Component \\ Debug \\ Exception \\ FatalThrowableError:调用未定义的方法Illuminate \\ Mail \\ Mailer :: cc()
在build
方法中发送邮件之前,如何在不知道收件人的情况下发送邮件? 换句话说,我想直接在build
方法中设置收件人(to),我不知道如何做到这一点。
这是一个解决这个问题的黑客:
Mail::to([])->cc($cc_mail)->send(new MyMailAlert());
所以只需添加一个带有空数组的to()
方法即可。 它仍然是一个黑客,我不确定它将来会起作用。
cc
记录在Laravel Docs中 ,但我无法在Laravel API文档中的Illuminate\\Mail\\Mailer
源代码中找到方法或属性。 所以你不能这样使用它。
但是Illuminate\\Mail\\Mailable
有cc
属性。 所以,如果你想在发送之前添加cc
并在构建方法上添加to
,你需要这样的东西:
MyMailAlert.php
class MyMailAlert extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*/
public function __construct()
{
//
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject($this->subject)->to($this->to)->view('my-mail');
}
}
在你的控制器中:
$myMailAlert = new MyMailAlert();
$myMailAlert->cc = $cc_mail;
// At this point you have cc already setted.
Mail::send($myMailAlert); // Here you sends the mail
请注意,构建方法使用subject
和to
邮寄实例的属性,因此您必须在发送之前设置它。
我不确定你在构建方法示例中从哪里检索$subject
和$to_email
,但是对于我的示例,你必须将这些值$myMailAlert->subject
和$myMailAlert->to
。 您可以在构建方法中使用自定义变量,但是假定该类已具有这些属性,则不需要自定义变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.