【发布时间】:2019-04-22 10:49:12
【问题描述】:
我正在尝试创建一个应用程序,其中一项功能是将电子邮件发送到多个地址,但这并不容易。我使用了一个 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));
}
}
}
我怎么能
- 通过在抛出异常后继续,将消息发送给多个收件人并使其防故障。
- 我如何跟踪申请的进度,即知道已发送的电子邮件和已被拒绝的电子邮件。
【问题讨论】:
-
你试过只传递一个地址数组吗?
标签: php laravel email eloquent swiftmailer