我正在从我的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)
答案 0 :(得分:235)
我遇到了同样的问题:电子邮件是从开发中发送的,而不是从生产中发送的(我收到的是Net::SMTPAuthenticationError
)。
这让我得出结论,问题不在于我的应用程序的配置,而在于谷歌。
原因:Google阻止了来自未知位置(生产中的应用)的访问权限
解决方案:转到http://www.google.com/accounts/DisplayUnlockCaptcha并点击继续(这将为注册新应用授予10分钟的访问权限)。 在此之后我的生产应用程序开始发送电子邮件;)
答案 1 :(得分:24)
此解决方案对我有用:
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
}
谷歌确实会阻止你的登录尝试,但是 您可以在https://www.google.com/settings/security/lesssecureapps更改设置,以便您的帐户不再受现代安全标准的保护。
答案 2 :(得分:23)
解决! 我只是更改了密码用于我的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
}
答案 3 :(得分:14)
答案 4 :(得分:13)
上述解决方案提供了正确的设置(我已经拥有),但没有解决问题。经过不断的尝试,我不断得到同样的错误。事实证明,我不得不从网上“清除CAPTCHA”。有关详细信息,请参阅gmail documentation。
您也可以直接跳到“清除验证码”页面here。
答案 5 :(得分:2)
很晚以后,以防它帮助任何人..只是打电话给Google Apps帮助中心,他们指示更改lesssecureapps设置(与其他人一样),但也将端口更改为465.
就我而言,这就是诀窍!
答案 6 :(得分:0)
你好,这对我也有用,所以如果有人还有问题,试试这个。
确保你的宝石文件中有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: 'example@gmail.com'
gmail_password: "your_example_email_password_here"
您必须在文件中使用您的电子邮件和密码进行身份验证。
答案 7 :(得分:0)
我也遇到了这个问题,经过Gmail设置的一些研究后,我找到了解决方案:
在Gmail中,转到设置。
选择&#34;转发和POP / IMAP&#34;标签
在IMAP访问部分,选择&#34;启用IMAP&#34;。
答案 8 :(得分:0)
您可以启用 less secure apps
选项(at here)。
https://myaccount.google.com/lesssecureapps
解锁Captcha (link):
https://accounts.google.com/DisplayUnlockCaptcha
答案 9 :(得分:0)
可接受的答案似乎很旧,我不知道当时是否存在以下(更好的)解决方案:
config.action_mailer.smtp_settings
中的生成密码现在,发送电子邮件非常有效!
答案 10 :(得分:0)
要解决此问题:
如果您看到: Net :: SMTPAuthenticationError(535-5.7.8不接受用户名和密码。),那么您需要允许安全性较低的应用程序登录您的Google帐户。 要启用不太安全的应用程序登录,请遵循:https://myaccount.google.com/lesssecureapps?。但是将允许所有应用登录。 如果要自定义,请参考:https://support.google.com/a/answer/6260879?hl=en
然后您可能会收到 Net :: SMTPAuthenticationError(534-5.7.14),因此要解决此问题,请参见:pli = 1http://www.google.com/帐户/ DisplayUnlockCaptcha。之后,请单击页面上的继续,您将被重定向。它将验证您的 Captcha ,并且您的应用程序将通过使用您的Google帐户发送电子邮件的验证。
注意:请确保您使用的是Gmail帐户的正确凭据。
如果您不愿意允许所有应用程序,请参阅:https://support.google.com/a/answer/6260879?hl=en。从链接转到对安全性较低的应用程序使用替代方法,这将引导您采用另一种方法允许安全性较低的应用程序访问您的Google帐户。
答案 11 :(得分:-1)
我遇到了同样的问题,在经过一些试验和错误之后,已经达到了这个解决方案,这是一个可以在谷歌中启用的选项:
点击https://www.google.com/settings/u/0/security/lesssecureapps
启用&#39;访问不太安全的应用&#39;在这里使用您在smtp配置中提供的电子邮件地址登录。