Rails smtp问题

问题描述 投票:0回答:3

我是初级铁路开发人员。我试图通过smtp发送电子邮件gmail.com我发现this article在互联网上。我的environments/production.rb

  config.action_mailer.delivery_method = :sendmail
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default_options = {from: '[email protected]'}

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
      address:              'smtp.gmail.com',
      port:                 587,
      domain:               'devb.carwash.it',
      user_name:            '[email protected]',
      password:             'mypass',
      authentication:       'plain',
      enable_starttls_auto: true
  }

像这样我试图发送邮件

   UserNotificationMailer.send_change_password_link(@user, params[:user][:password]).deliver_now

我有这个错误。 Net :: SMTPSyntaxError(501语法:HELO主机名

在我的服务器上,如果我运行hostname主机名,输出是:

devb.carwash.it

我做错了什么?谢谢

ruby-on-rails ruby linux centos smtp
3个回答
0
投票

域名应该是gmail.com您已将其设置为您自己的域但这是不正确的。

From Ruby docs

HELO域名

在几乎所有情况下,您必须为:: start / SMTP #start提供第三个参数。这是您所在的域名(发送邮件的主机)。它被称为“HELO域”。 SMTP服务器将通过检查HELO域来判断是应该发送还是拒绝SMTP会话。

示例配置:

config.action_mailer.smtp_settings = {
      address:              'smtp.gmail.com',
      port:                 587,
      domain:               'gmail.com',
      user_name:            '[email protected]',
      password:             'mypass',
      authentication:       :plain,
      enable_starttls_auto: true
  }

0
投票

让我分享一下我在用Gmail修复此问题时遇到的问题。

  1. 首先启用安全性较低的应用登录Gmail。 访问您的gmail settings并启用安全性较低的应用程序以使应用程序正常运行。
  2. 将以下身份验证密钥的值从:plain更改为:login
  3. 如果您启用了两步验证以访问Gmail,则必须向您提供应用权限。

希望这可以帮助 :)


0
投票

所以不幸的是我没有解决这个问题。我的修复是不使用动作邮件的mail(),但使用Mail gem - 它工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.