2017-07-03 10 views
1

Je fonction mail d'envoi dans LaravelLaravel Mail Envoyer un même si cc et bcc est nul

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

Dans de nombreux cas, CC et BCC est nul. Mais mails ne sont pas envoyés et je reçois un message d'erreur

enter image description here

Ici, je veux utiliser le code comme il est sans vérifier si CC ou BCC est nulle, est-il quelque chose manqué par moi afin que Je peux réaliser ce que je prévois.

+2

Pourquoi ne pas vouloir vérifier? C'est la chose la plus simple au monde et beaucoup plus rapide que de demander une solution qui n'existe même pas –

+0

Dans ce cas, je pense que si laravel a vérifié si cc ou bcc est vide alors il aurait ignoré cela directement sans avertir développeur, donc je pensais qu'il pourrait y avoir quelque chose fait par laravel où il vérifie que cc ou bcc est vide et il me manque que – dollar

Répondre

1

vous ne pouvez pas envoyer des e-mail si l'adresse e-mail est vide, il sera toujours jeter erreur

à la place que vous devez vérifier et envoyer des e-mail en conséquence

essayer cette

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

Ces méthodes peuvent tous sont appelés avec un tableau au lieu d'une chaîne simple (docs). Dans ce cas, vous devriez pouvoir laisser le tableau vide. Essayez ceci:

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

problème est que si nous laissons tableau vide, alors le message d'erreur est levé, même pour votre code, il est la même erreur message – dollar

+0

Je suppose que vous avez trouvé un bug dans SwiftMailer. Vous pouvez essayer de signaler que la définition de cc/bcc sur un tableau vide est impossible (ce qui n'est pas documenté). – aross