dongping1689 2017-05-04 08:53
浏览 6
已采纳

在发送电子邮件时建立收件人让我与Laravel例外

I am trying to send an email and if it has cc, it will be sent with 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');
    }
}

This controller worked flawlessly before I introduced the cc logic, but after I added the if else to the build function, Laravel sends me this error:

ErrorException in Mailable.php line 241: Invalid argument supplied for foreach()

Which is this function:

protected function buildRecipients($message)
    {
        foreach (['to', 'cc', 'bcc', 'replyTo'] as $type) {
            foreach ($this->{$type} as $recipient) {
                $message->{$type}($recipient['address'], $recipient['name']);
            }
        }

        return $this;
    }

I have tried both with and without adding $cc when calling a function, and it always gives me the same error. As I said this worked before I introduced the if else.

I already solved this by creating 2 different Mail controllers, but I would like to know why this solution doesn't work. Thanks in advance

  • 写回答

2条回答 默认 最新

  • dongzhuang5741 2017-05-04 09:28
    关注

    I actually renamed the variable $cc to $mycc and it works again.

    Since the class extended Mailable, and Mailable already has a variable called $cc, which is supposed to be an array, my $cc = null overwrote the variable.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面