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条)

报告相同问题?

悬赏问题

  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错