【发布时间】:2023-03-27 05:48:01
【问题描述】:
我一直在尝试使用 laravel Mail::send() 函数获取未收到电子邮件的收件人列表。我正在尝试以下代码。 for循环被用作因为每个用户要接收定制的消息。
// First recipient is actual, the second is dummy.
$mail_to_users = ["original_account@domain.com","dummy_account@domain.com"];
$failures = [];
foreach($mail_to_users as $mail_to_user) {
Mail::send('email', [], function($msg) use ($mail_to_user){
$msg->to($mail_to_user);
$msg->subject("Document Shared");
});
if( count( Mail::failures() ) > 0 ) {
$failures[] = Mail::failures()[0];
}
}
print_r($failures);
我一直在尝试所有可能的选择。我将config/mail.php 中的正确邮件配置更改为错误的配置。但如果我这样做,laravel 会显示错误页面,但 $failure 变量总是返回空。
【问题讨论】:
-
从 Swiftmailer 只重新调整非常特定类型的故障是毫无价值的:几乎只有故障,因为用于邮件的方法拒绝了地址/电子邮件。使用
SMTP这通常没问题,因为 SMTP 服务器会立即返回失败,但使用 sendmail 之类的东西很少(如果有的话)返回失败,因为无论如何电子邮件都会被接受,然后再发送。因此,如果您在邮件配置中使用sendmail(甚至可能是mail),您可能需要使用不同的方式来监控投递失败。 -
请参阅swiftmailer.org/docs/sending.html,了解有关何时返回失败和不返回失败的文档。
标签: php email laravel laravel-4 swiftmailer