Laravel 在不使用 foreach 循环的情况下发送单独的多封邮件
Posted
技术标签:
【中文标题】Laravel 在不使用 foreach 循环的情况下发送单独的多封邮件【英文标题】:Laravel sending separate, multiple mail without using foreach loop 【发布时间】:2015-01-07 23:18:35 【问题描述】:我在 SwiftMailer 库下的 laravel 中使用 Mail 函数。
Mail::send('mail', array('key' => $todos1), function($message)
$message->to(array('TEST@example.com','TESsdT@example.com','TESjxfjT@example.com','TESfssdT@example.com'))->subject('Welcome!');
);
上述功能向多个用户发送邮件,但用户知道所有邮件发送给谁,因为它的收件人地址包括
To: TEST@example.com, TESsdT@example.com, TESjxfjT@example.com, TESfssdT@example.com
所以为了纠正这个问题,我使用了一个 foreach
循环来单独发送邮件
foreach($to as $receipt)
//Mail::queue('mail', array('key' => $todos1), function($message) use ($receipt)
Mail::send('mail', array('key' => $todos1), function($message) use ($receipt)
$message->to($receipt)->subject('Welcome!');
);
上面的代码运行良好...
我的问题是,在这个高级框架中是否有任何功能可以向具有唯一to
地址的用户发送邮件(即)无需一个用户知道有多少其他人发送相同的邮件发送时不使用foreach
...
【问题讨论】:
【参考方案1】:您可以使用密件抄送(密件抄送):
Mail::send('mail', array('key' => $todos1), function($message)
$message->to('firstemail@example.com')
->bcc(array('TEST@example.com','TESsdT@example.com','TESjxfjT@example.com','TESfssdT@example.com'))
->subject('Welcome!');
);
【讨论】:
如果我需要使用与电子邮件中每个目的地相关联的变量,我必须使用foreach
?
@JCarlos 是的,如果每封电子邮件都是唯一的,那么您将需要循环发送每封电子邮件。只有当您向所有人发送完全相同的电子邮件时,上述方法才有效【参考方案2】:
您可以使用抄送或密件抄送将相同的 html 邮件发送给 N 人:
$content = '<h1>Hi there!</h1><h2 style="color:red">Welcome to ***..</h2>';
$bcc = ['*****@gmail.com','******@gmail.com'];
$sub = "Sample mail";
Mail::send([], [], function($message) use ($content, $sub, $bcc)
$message->from('ur-mail-id@gmail.com','name');
$message->replyTo('no-reply@gmail.com', $name = 'no-reply');
$message->to('******@domain.com', 'name')->subject($sub);
$message->bcc($bcc, $name = null);
// $message->attach('ch.pdf'); // if u need attachment
$message->setBody($content, 'text/html');
);
【讨论】:
【参考方案3】:SwiftMailer 的工作方式与您的普通电子邮件客户端(Outlook、Thunderbird...)类似。
您所做的是唯一 100% 正确的操作,但您仍然可以按照史蒂夫的建议进行操作,使用密件抄送,但不要在收件人中使用 noreply 或其他不重要的电子邮件地址,因为所有收件人将看到该电子邮件地址。
注意:单个函数调用不会使您的代码更快或更少占用资源。
【讨论】:
你是说使用foreach
和单个函数会一样吗??以上是关于Laravel 在不使用 foreach 循环的情况下发送单独的多封邮件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 的 PHP/Blade 中使用 Foreach 循环?
在laravel中使用javascript进行foreach循环
在 foreach 循环中删除重复项(但计算它们) - Laravel 8