为什么我没有收到来自我的 Rails 5 应用程序的所有邮件?

why i did'nt received all the mails from my rails5 application?

我部署了一个带有联系表的 rails5 网站。我使用 action-mailer 和 gmail 向我发送联系表(通过我的 gmail 帐户)。我的 google 帐户使用应用程序密码进行了两步验证。问题是大部分时间都很好,但有时我没有收到邮件。我认为这是来自 Google,因为如果它来自我的代码,为什么我大部分时间都会收到它们。 我希望有人有想法。 我有第二个问题,这种从我的操作邮件配置中调用凭据的语法是否合适?

    address:              'smtp.gmail.com',
    port:                 587,
    domain:               'domain.com',
    user_name:            ['Rails.application.credentials.dig(:production, :GMAIL_USER_NAME)'],
    password:             ['Rails.application.credentials.dig(:production, :GMAIL_PASSWORD)'],
    authentication:       'plain',
    enable_starttls_auto: true  } 

在我的 credentials.yml.enc 中:

    GMAIL_USER_NAME: user@gmail.com
    GMAIL_PASWORD: applicationgmailpassword

因为您收到了一些电子邮件,我认为您是对的,问题出在 Google,而不是您的应用程序。

它们是否出现在您的垃圾邮件文件夹中?

您可以尝试切换到 Mailgun 之类的软件。 试试这个教程:https://www.leemunroe.com/send-automated-email-ruby-rails-mailgun/

关于你的第二个问题,我认为你需要重新格式化。

如何构建您的 credentials.yml.enc 文件:

# no need to specify between environments
# no need to capitalize
gmail_user_name: someemail@gmail.com
gmail_password: thisIsNotMyRealPassword

然后调用这些变量:

Rails.application.credentials.gmail_user_name
Rails.application.credentials.gmail_password

因此,在您的 ActionMailer 配置文件中,您应该这样做:

  ...
  user_name: Rails.application.credentials.gmail_user_name,
  password: Rails.application.credentials.gmail_password,
  ...

谢谢@Chiperific,凭据配置运行良好。 对于另一个问题,我可能会尝试使用 Mailgun。经过大量测试后,我很确定当 url 为 mydomain.com 而不是 www.mydomain.com 时,gmail 会阻止我的应用程序连接! 如果有人有想法可以帮助我。 谢谢。