2017-07-03 170 views
1

我在laravelLaravel郵件發送,即使抄送和密送爲空

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); 
     } 
    } 

mail發送功能在許多情況下,CC和BCC是空。 但郵件沒有發送,我收到錯誤消息

enter image description here

在這裏,我想使用的代碼,因爲它是不檢查,如果CC或BCC爲空,是否存在被我錯過了什麼東西,這樣我可以實現我的計劃。

+2

爲什麼你不想檢查? 這是世界上最簡單的事情,比要求解決方案的速度要快很多 –

+0

在這種情況下,我認爲如果laravel檢查cc或bcc是否爲空,那麼它會直接忽略,而不會通知開發人員,所以我認爲有可能是由laravel完成的地方,它檢查cc或密件抄送是空白的,而我錯過了 – dollar

回答

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"]); 

} 
0

這些方法可以全部使用數組而不是普通字符串調用(docs)。在這種情況下,你應該可以將數組留空。試試這個:

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

問題是,如果我們將數組留空,則會拋出錯誤消息,即使對於您的代碼,它也會引發相同的錯誤消息 – dollar

+0

我想你會在SwiftMailer中發現一個bug。您可以嘗試報告設置cc/bcc爲空數組是不可能的(這是未記錄的)。 – aross

相關問題