在发送电子邮件时建立收件人让我与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

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.

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

it means that argument passed to the foreach is not an array. According to your code it means that one of the 'to', 'cc', 'bcc', 'replyTo' properties is either empty or not an array. I'd suggest to add is_array check before foreach.

Thanks.