【问题标题】:Laravel 4.2 & Mailgun: Check if mail is sentLaravel 4.2 & Mailgun:检查邮件是否发送
【发布时间】:2015-12-19 17:50:09
【问题描述】:

我在我的一个 laravel 4.2 项目中使用 Mailgun,一切都做得很完美,并且在网站上线之前在本地机器上进行了彻底的测试。

该网站正在生成大量电子邮件,例如每天大约 100 到 200 封电子邮件。所有的电子邮件都是自动发送的,但我开始抱怨很少有人没有收到电子邮件。我已经询问并确认,电子邮件不会进入垃圾邮件/垃圾邮件文件夹。只是在某些情况下,用户由于某种原因没有收到电子邮件。

我正在使用免费的 Mailgun 帐户,这可能是个问题吗?或者是其他东西?想不通。

在 Laravel 内部,有没有办法检查邮件是否正在发送?

【问题讨论】:

    标签: php email laravel laravel-4 mailgun


    【解决方案1】:

    在类似的使用场景下,我在使用 Mailgun 和 Mandrill 时遇到了同样的问题。

    首先要做的是检查 Mailgun 针对该域的日志,看看是否有针对相关收件人的任何警告或严重故障。我遇到了很多关于 AOL 帐户的问题,尤其是受到限制 - 他们通常会在几小时或几天后收到电子邮件。

    接下来,联系他们的支持团队并报告问题 - 为他们提供一些电子邮件被退回或延迟的标识符。他们通常会将您转移到另一个“噪音”较小的 IP 地址。问题在于您使用的是共享 IP 地址,并且某些电子邮件提供商可能会将您的邮件标记为垃圾邮件,或者由于同一 IP 地址上的可疑活动而延迟其传输。

    不幸的是,电子邮件很棘手。专用 IP 地址可能会有所帮助,但要花钱,而且通常不会使发送相对少量邮件的应用程序受益。我还建议向http://www.mail-tester.com/ 发送一封测试电子邮件,以了解电子邮件提供商如何查看它。非常方便的工具。

    【讨论】:

      【解决方案2】:

      您可以检查是否有失败,然后再试一次:

      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.';
      }
      

      【讨论】:

        猜你喜欢
        • 2016-01-10
        • 2016-12-04
        • 1970-01-01
        • 1970-01-01
        • 2015-12-29
        • 2017-10-12
        • 2016-09-08
        • 1970-01-01
        • 2021-05-12
        相关资源
        最近更新 更多