我正在尝试创建一个应用程序,其功能之一就是将电子邮件发送到多个地址,这并不容易。我使用了foreach循环,但是每当发生错误时,尤其是如果收件人邮件地址无效,应用程序就会停止。
这是我的代码
public function sendemails(Request $request){
$email = $this->emailSetUp($request);
$emails = $email->recipients;
foreach ($emails as $value) {
try{
$mail = Mail::to($value)->send(new SendEmail($email));
}catch( \Swift_RfcComplianceException $e){
$pattern = '/[a-z0-9_\-\+\.]+@[a-z0-9\-]+\.([a-z]{2,4})(?:\.[a-z]{2})?/i';
preg_match_all($pattern, $e, $matches);
$match = implode(',',$matches[0]);
$mail_t_del = Email::where('email','LIKE', '%'.$match)->first();
$mail_t_del->delete();
Log::info($match .' '. 'deleted');
$email = $this->emailSetUp($request);
$mail = Mail::send(new SendEmail($email));
}
}
}
我怎么
答案 0 :(得分:1)
您可以传递一系列电子邮件。
有关详细信息,请参见此处
https://laravel.com/api/5.5/Illuminate/Contracts/Mail/Mailer.html#method_to
我还建议您创建一个自定义请求,以检查以确保在处理之前电子邮件有效。
您可以在此处查看操作方法:
答案 1 :(得分:1)
-将邮件发送给多个收件人
传递您邮件类别中的所有电子邮件
示例:
Mail::to($users)->send(new SendEmail($yourData));
将您的代码放入try catch
以便您可以忽略异常并继续发送其他邮件
-跟踪进度
如果要获取发送或不发送哪些邮件
然后处理catch语句异常并将其记录在文件或数据库中