Laravel Mail发送电子邮件但返回false

Chr*_*per 15 php laravel laravel-4

我正在尝试发送电子邮件,并在需要时显示任何错误.以下代码正在发送电子邮件,我收到它就好了.但问题是,当我对$ sent var进行检查时,它会为我返回false.

我在这里错过了一些东西吗?可能是因为它已经晚了.谁知道...

$sent = Mail::send('emails.users.reset', compact('user', 'code'), function($m) use ($user)
{
    $m->to($user->email)->subject('Activate Your Account');
});

if( ! $sent)
{
    $errors = 'Failed to send password reset email, please try again.';
}
Run Code Online (Sandbox Code Playgroud)

jud*_*eid 37

Mail :: send()方法不返回任何内容.

您可以使用Mail :: failures()(在我认为4.1中引入)方法来获取一组失败的收件人,在您的代码中它看起来像这样.

Mail::send('emails.users.reset', compact('user', 'code'), function($m) use ($user)
{
    $m->to($user->email)->subject('Activate Your Account');
});

if(count(Mail::failures()) > 0){
    $errors = 'Failed to send password reset email, please try again.';
}
Run Code Online (Sandbox Code Playgroud)

  • 很好的解释,但我有另一种好奇心。例如,假设电子邮件地址有效,但由于互联网断开而无法正确发送。laravel 可以发出警告吗?或者可能由于其他原因未发送电子邮件,这有点像电子邮件地址无效。laravel 也可以给出警告吗? (3认同)
  • Mail::send() 不是异步的。您可以通过调用 Mail::queue() 代替上面的 send 方法来对邮件进行排队,但这在技术上仍然不是异步的,它只是创建一个队列作业而不是实际发送邮件,并且队列工作器会捕获错误。 (2认同)