it-swarm.cn

从Rails应用程序发送电子邮件时的Net :: SMTPAuthenticationError(在登台环境中)

我正在从我的Rails应用程序发送电子邮件。它在开发环境中运行良好,但在暂存时失败。我收到以下错误:

Net::SMTPAuthenticationError (534-5.7.14 <https://accounts.google.com/ContinueSignIn?plt=AKgnsbtdF0yjrQccTO2D_6)

请注意,我的暂存没有域名。

这是我在staging.rb中的设置

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :Host => "my.ip.addr.here:80" }
config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'my.ip.addr.here:80'
      :user_name => "[email protected]",
      :password => "my_email_password",
      :authentication => 'login'
}

请帮忙。

编辑。

添加:tls => true选项后,我得到了

OpenSSL::SSL::SSLError (Unrecognized SSL message, plaintext connection?)

然后我将端口更改为25,现在我得到了这个(延迟30秒):

Timeout::Error (execution expired)
90
eagor

我遇到了同样的问题:电子邮件是从开发中发送的,但不是从生产中发送的(我收到的是Net::SMTPAuthenticationError)。这让我得出结论,问题不是我的应用程序的配置,而是谷歌。

原因 :Google阻止了来自未知位置的访问权限(生产中的应用)

解决方案 :转到 http://www.google.com/accounts/DisplayUnlockCaptcha 并单击“继续”(这将为注册新应用授予10分钟的访问权限)。在此之后我的生产应用程序开始发送电子邮件;)

234
Gee-Bee

这个解决方案对我有用:

config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options = { Host:'localhost', port: '3000' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"
  config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'localhost:3000',
      :user_name => "[email protected]",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true
  }

Google确实会阻止您的登录尝试,但您可以在 https://www.google.com/settings/security/lesssecureapps 更改您的设置,以便您的帐户不再受现代安全标准的保护。

24
A H K

解决了!我只是 更改了密码 我的Gmail帐户,不知何故错误消失了。

经过十几次更改后,我最终的最终设置是:

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :Host => "my.ip.addr.here" }
config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'my.ip.addr.here:80',
      :user_name => "[email protected]",
      :password => "my_email_password",
      :authentication => :plain,
      :enable_starttls_auto => true
}
23
eagor
14
aashish

上面的解决方案提供了正确的设置(我已经拥有),但没有解决问题。经过不断的尝试,我不断得到同样的错误。事实证明,我不得不从网上“清除CAPTCHA”。有关详细信息,请参阅 gmail文档

你也可以直接跳到“清除CAPTCHA”页面 这里

13
Sorry-Im-a-N00b

很久以后,以防万一它可以帮助任何人..只是打电话给谷歌应用程序帮助中心,他们指示更改lesssecureapps设置(与其他人一样),但也将端口更改为465。

就我而言,这就是诀窍!

2
Alejandro Sherwell

接受的答案似乎很老,我不知道当时是否存在以下(更好)解决方案:

现在,发送电子邮件完美无缺!

0
ubugnu

我有同样的问题。


解:

0
Benyamin Jafari

我也遇到了这个问题,经过Gmail设置的一些研究后,我找到了解决方案:

  1. 在Gmail中,转到设置。

  2. 选择“转发和POP/IMAP”选项卡。

  3. 在IMAP访问部分中,选择“启用IMAP”。

0
Shrinivas

您好,这也适用于我,所以如果有人仍然有问题尝试这个。

确保你的gemfile中有figaro。将用户名和密码等敏感信息保存为环境变量

gem 'figaro'

在config/environments/development.rb中,使用smtp作为方法传递粘贴下面的代码

 config.action_mailer.delivery_method = :smtp

gmail的SMTP设置

  config.action_mailer.smtp_settings =
  {
    :address=> "smtp.gmail.com",
    :port => 587,
    :user_name => ENV['gmail_username'],
    :password=> ENV['gmail_password'],
    :authentication=> "plain",
    :enable_starttls_auto=>true
  }


config.action_mailer.default_url_options = { Host: "locahost:3000" }

在config目录中创建一个名为application.yml的文件,并添加以下代码。

gmail_username: '[email protected]' 
gmail_password: "your_example_email_password_here"

您必须使用您的电子邮件和密码进行身份验证。

0
cooxy