即使cc和bcc为空,Laravel Mail也会发送

时间:2017-07-03 11:27:02

标签: php email laravel-5.1 cc bcc

我在laravel中有邮件发送功能

public static function Compose($to,$cc,$bcc,$subject,$body)
    {

        // return $to;
        try
        {
            $data = [
                'body' => $body
            ];

            if(env('APP_ENV') == "local") 
            {
                $email["subject"] = $subject;
                $email["to"] = $to;
                $email["cc"] = $cc;
                $email["bcc"] = $bcc;
                Mail::send('email.composeMail', $data, function ($message) use ($email) {

                    $message
                        ->subject($email["subject"])
                        ->to($email["to"]);
                        ->cc($email["cc"]);
                        ->bcc($email["bcc"]);
                });
            }
            else
            {
                $email["subject"] = $subject;
                $email["to"] = $to;
                $email["cc"] = $cc;
                $email["bcc"] = $bcc;

                Mail::send('email.composeMail', $data, function ($message) use ($email) {

                    $message
                        ->subject($email["subject"])
                        ->to($email["to"]);
                        ->cc($email["cc"]);
                        ->bcc($email["bcc"]);
                });
            }
        } 
        catch (\Exception $e) 
        {
            Log::critical('Critical error occurred upon processing the transaction in Email.php -> Email class -> RevertPropertyToInbox method');
            throw new CustomErrorHandler($e->getMessage(),Constant::LogLevelCritical);
        }
    }

在许多情况下,CC和BCC是空的。 但是邮件没有发送,我收到错误消息

enter image description here

在这里,我想使用代码,而不检查CC或BCC是否为空,我是否有任何遗漏,以便我能够实现我的目标。

2 个答案:

答案 0 :(得分:2)

这些方法都可以使用数组而不是普通字符串(docs)来调用。在这种情况下,您应该能够将数组留空。试试这个:

$message
    ->subject($email["subject"])
    ->to($email["to"]);
    ->cc($email["cc"] ?: []);
    ->bcc($email["bcc"] ?: []);

答案 1 :(得分:1)

如果电子邮件地址为空白,则无法发送电子邮件,它将始终抛出错误

相反,您需要检查然后相应地发送电子邮件

试试这个

if($email["cc"] =='' && $email["bcc"] == ''){
 $message
                        ->subject($email["subject"])
                        ->to($email["to"]);
}
elseif($email["cc"] ==''){
$message
                        ->subject($email["subject"])
                        ->to($email["to"])
                        ->bcc($email["bcc"]);
}
else{

$message
                        ->subject($email["subject"])
                        ->to($email["to"])
                        ->cc($email["cc"]);

}