我正在尝试发送电子邮件,如果有cc,则会以cc。
发送public $content;
public $subject;
public $filename;
public $user_id;
public $cc;
public function __construct($content,$subject,$filename,$user_id,$cc = null)
{
$this->content = $content;
$this->subject = $subject;
$this->filename = $filename;
$this->user_id = $user_id;
$this->cc = $cc;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
if($this->cc){
return $this->from("my@email.io")
->subject($this->subject)
->cc($this->cc)
->attach(storage_path() . "/app/public/files/" . $this->user_id . "/" . $this->filename)
->view('emails.sent');
}else{
return $this->from("my@email.io")
->subject($this->subject)
->attach(storage_path() . "/app/public/files/" . $this->user_id. "/" .$this->filename)
->view('emails.sent');
}
}
在我介绍cc逻辑之前,这个控制器运行得很完美,但是在我将if else添加到构建函数之后,Laravel发送了这个错误:
Mailable.php第241行中的ErrorException:提供的参数无效 的foreach()
这是什么功能:
protected function buildRecipients($message)
{
foreach (['to', 'cc', 'bcc', 'replyTo'] as $type) {
foreach ($this->{$type} as $recipient) {
$message->{$type}($recipient['address'], $recipient['name']);
}
}
return $this;
}
我在调用函数时尝试使用和不添加$ cc,它总是给我同样的错误。正如我在介绍if else之前所说的那样。
我已经通过创建2个不同的Mail控制器解决了这个问题,但我想知道为什么这个解决方案不起作用。提前致谢
答案 0 :(得分:2)
我实际上将变量$ cc重命名为$ mycc,然后再次运行。
由于类扩展了Mailable
,并且Mailable已经有一个名为$cc
的变量,它应该是一个数组,我的$cc = null
覆盖了该变量。
答案 1 :(得分:1)
Mailable.php第241行中的ErrorException:为foreach()提供的参数无效
这意味着传递给foreach的参数不是数组。根据你的代码,它意味着'to','cc','bcc','replyTo'属性之一是空的或不是数组。我建议在foreach之前添加is_array检查。
感谢。