2017-07-03 6 views
1

I Mail-Sendefunktion in LaravelLaravel Post auch wenn cc und bcc ist null

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

In vielen Fällen CC und BCC ist Null haben. Aber Mails nicht gesendet werden, und ich erhalte Fehlermeldung

enter image description here

Hier möchte ich Code verwenden, wie es ohne zu überprüfen ist, ob CC oder BCC null ist, Gibt es irgend etwas von mir vermisst, so dass Ich kann erreichen, was ich vorhabe.

+2

Warum möchten Sie nicht überprüfen? Es ist die einfachste Sache in der Welt und viel schneller als die Frage nach einer Lösung, die wahrscheinlich nicht existiert –

+0

In diesem Fall denke ich, wenn laravel überprüft haben, ob cc oder bcc leer ist, hätte es direkt ignoriert, ohne zu benachrichtigen Entwickler, so dachte ich, es könnte etwas von Laravel getan werden, wo es überprüft, dass cc oder bcc leer ist und ich vermisse das – dollar

Antwort

1

Sie keine E-Mails senden können, wenn die E-Mail-Adresse leer ist, wird es immer werfen Fehler

stattdessen müssen Sie prüfen, und dann E-Mail entsprechend

versuchen, diese

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

Diese Methoden können Alle werden mit einem Array anstelle einer einfachen Zeichenfolge (docs) aufgerufen. In diesem Fall sollten Sie das Array einfach leer lassen können. Versuchen Sie Folgendes:

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

Problem ist, dass, wenn wir Array leer lassen, wird Fehlermeldung ausgelöst, auch für Ihren Code wirft es gleiche Fehler Nachricht – dollar

+0

Ich denke, dann haben Sie einen Fehler in SwiftMailer gefunden. Sie könnten versuchen zu berichten, dass die Einstellung von cc/bcc auf ein leeres Array unmöglich ist (was undokumentiert ist). – aross

Verwandte Themen