[英]How to send email to multiple recipients laravel
我正在尝试创建一个应用程序,其中一项功能是将电子邮件发送到多个地址,这并不容易。 我使用了 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));
}
}
}
我怎样才能
您可以传递一系列电子邮件。
详情请看这里
https://laravel.com/api/5.5/Illuminate/Contracts/Mail/Mailer.html#method_to
此外,我建议您创建一个自定义请求来检查以确保电子邮件在处理之前有效。
你可以在这里看到如何做到这一点:
- 将消息发送给多个收件人
传递邮件类中的所有电子邮件
例子:
Mail::to($users)->send(new SendEmail($yourData));
把你的代码放在 try catch 中
以便您可以忽略异常并继续发送其他邮件
- 跟踪进度
如果您想获取发送或不发送的邮件
然后在 catch 语句异常上处理它并将其记录在文件或数据库中
要将电子邮件发送给多个收件人而不向所有收件人显示已发送的电子邮件,请尝试以下操作:此方法将遍历为表单或数据库提供的电子邮件。 在此示例中,用户 ID 来自表单请求,然后从数据库中检索选定用户的电子邮件。
foreach($request->get_emails as $i => $a){
$user = User::find($a);
Mail::send('emails.template', ['name' => $user['name'], 'body' => $request->body], function ($m) use($user) {
$m->from('info@example.com', 'Sender Name');
$m->to($user['email'], $user['name'])->subject('this is the subject');
});
}
此外,您可以选择向所有收件人显示电子邮件。 为此,请尝试:
$emails = ['eamil1@example.com', 'email2@example.com','email3@example.com'];
Mail::send('emails.template', [], function($m) use ($emails)
{
$m->to($emails)->subject('This is the email subject');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.