Net :: SMTPAuthenticationError从Rails应用程序发送电子邮件(在分段环境)

我从我的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 => "my_email_name@gmail.com", :password => "my_email_password", :authentication => 'login' } 

请帮忙。

编辑。

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

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

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

 Timeout::Error (execution expired) 

我有同样的问题:电子邮件是从开发发送,但不是从生产(我得到Net::SMTPAuthenticationError )。 这促使我得出结论,问题不是我的应用程序的configuration,而是与谷歌。

原因 :Google阻止访问来自不明的位置(应用正在制作中)

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

这个解决scheme正在为我工​​作:

 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 => "xyz@gmail.com", :password => "password", :authentication => :plain, :enable_starttls_auto => true } 

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

解决了! 我只是改变了我的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 => "my_email_name@gmail.com", :password => "my_email_password", :authentication => :plain, :enable_starttls_auto => true } 

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

您也可以跳到这里的“清除CAPTCHA”页面。

很久以后,但以防万一它帮助..只是称为谷歌应用程序帮助中心,他们指示更改lesssecureapps设置(作为其他人),而且也将端口更改为465。

在我的情况下,这个伎俩!

我也遇到了这个问题,经过对Gmail设置的一些研究,我发现了这个解决scheme:

  1. 在Gmail中,进入设置。

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

  3. 在IMAP访问部分,select“启用IMAP”。

你好,这也适用于我,所以如果有人仍然有问题尝试了这一点。

确保你的gemfile中有figaro。 将敏感信息(如用户名和密码)保存为环境variables

 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目录下创build一个名为application.yml的文件并添加下面的代码。

 gmail_username: 'example@gmail.com' gmail_password: "your_example_email_password_here" 

您必须在文件中使用您的电子邮件和密码进行身份validation。

我有同样的问题,并经过一些试验和错误,已经到了这个决议,这是一个选项在谷歌中启用:

点击https://www.google.com/settings/u/0/security/lesssecureapps

通过使用您在smtpconfiguration中提供的电子邮件地址login,启用“访问不太安全的应用程序”。

Interesting Posts