是否可以发送电子邮件但仍然引发异常?

时间:2019-10-26 19:09:27

标签: php laravel email swiftmailer

因此,我想发送电子邮件并在数据库中记录已成功发送,这是我的工作:

  • 首先,尝试向用户发送包含产品信息的电子邮件

  • 第二,检查电子邮件是否已成功发送。如果是,则在数据库中记录已成功发送。

但是,如果发送电子邮件失败(引发了异常),我想捕获该异常并返回错误消息。

我的问题是: 是否有电子邮件被发送但仍然引发异常的情况?

因此,该代码返回错误,认为该电子邮件未发送..但实际上已发送,并且此后稍后引发了异常。

    // pseudo code      
    try{
        $is_sent = send_email();
        if($is_sent){
            $db->email_was_sent();
        }
    }catch(Exception $e){
        return 'Email was not sent. An exception';
    }

1 个答案:

答案 0 :(得分:1)

  

是否存在发送电子邮件但仍引发异常的情况?

这取决于。

如果发送电子邮件给单个收件人,则可能导致以下三种情况:

  • 电子邮件已传递给收件人
  • 电子邮件无法传递给收件人
  • 提出了例外情况

在这种情况下,这将是SwiftMailer电子邮件客户端的未记录行为 发送电子邮件,但仍然会引发异常。

如果电子邮件发送给多个收件人,则可能导致以下三种情况:

  • 电子邮件已发送给所有收件人
  • 电子邮件未能传递给一个或多个收件人
  • 提出了例外情况

对于其他情况,电子邮件可能会传递给某些收件人,但仍然会引发例外情况。

https://swiftmailer.symfony.com/docs/sending.html#using-the-send-method

AbstractSmtpTransport::send()显示可能无法为一个或多个收件人发送电子邮件。 https://github.com/swiftmailer/swiftmailer/blob/v6.2.1/lib/classes/Swift/Transport/AbstractSmtpTransport.php#L178