Net :: SMTPAuthenticationError ao enviar e-mail do aplicativo Rails (no ambiente de teste)

95

Estou enviando email do meu aplicativo Rails. Funciona bem no ambiente de desenvolvimento, mas falha na preparação. Estou tendo o erro a seguir:

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

Observe que não tenho um nome de domínio para minha preparação.

Aqui estão minhas configurações em 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'
}

Por favor ajude.

Editar.

Depois de adicionar a :tls => trueopção, recebo

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

E então eu mudei a porta para 25 e agora eu entendo (com 30 segundos de atraso):

Timeout::Error (execution expired)
Ágora
fonte
1
Copiei o url por engano (o Google provavelmente pensou com antecedência para nós) para o navegador. Digitei minha senha e no painel que vi mudou a possibilidade de fazer pedidos não só de sites confiáveis.
zmii

Respostas:

249

Eu tive o mesmo problema: emails eram enviados do desenvolvimento, mas não da produção (de onde eu estava recebendo Net::SMTPAuthenticationError). Isso me levou a concluir que o problema não era com a configuração do meu aplicativo, mas com o Google.

Motivo : o Google estava bloqueando o acesso de local desconhecido (aplicativo em produção)

Solução : vá para http://www.google.com/accounts/DisplayUnlockCaptcha e clique em continuar (isso concederá acesso por 10 minutos para registrar novos aplicativos). Depois disso, meu aplicativo em produção começou a enviar e-mails;)

Gee-Bee
fonte
3
Essa é realmente a maneira correta de resolver o problema (embora possa colocar sua conta em risco). Mas funciona.
zakelfassi
40
Também não se esqueça de permitir o acesso à conta aqui :: google.com/settings/security/lesssecureapps
Chauskin Rodion
Consegui evitar a lesssecureappsconfiguração usando autenticação multifator e habilitando uma senha específica do aplicativo para o meu servidor Rails.
Chris Beck de
1
Provavelmente melhor usar um serviço como o Mandrill para enviar e-mails em um ambiente de produção
Codebling
Eu ativei a configuração da conta lesssecureapps e fui para a página DisplayUnlockCaptcha e pressionei OK, enviei e-mail por trilhos, mas recebi o mesmo erro Net::SMTPAuthenticationError ...ContinueSignIn.... Então tentei fazer o mesmo após 10 minutos e começou a funcionar.
Lev Lukomsky
25

Esta solução está funcionando para mim:

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
  }

É verdade que o Google bloqueará sua tentativa de login, mas você pode alterar suas configurações em https://www.google.com/settings/security/lesssecureapps para que sua conta não seja mais protegida por padrões de segurança modernos.

AHK
fonte
Existe uma maneira de contornar isso? É possível cadastrar seu aplicativo no google, por exemplo?
jphager2
24

Resolvido! Eu simplesmente mudei a senha da minha conta do gmail e de alguma forma os erros desapareceram.

Depois de uma dúzia de mudanças, as configurações finais que obtive são:

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
}
Ágora
fonte
1
Obrigado! Esse problema estava me causando muita dor de cabeça e, no final, o que eu precisava fazer era alterar a senha da minha conta do google após usar essas configurações e definir a opção de permitir aplicativos menos seguros nas configurações da conta do google.
Corey
Depois de definir 'permitir aplicativos menos seguros' e dizer ao Google para confiar no meu dispositivo (IP do servidor) e esperar por mais de 24 horas ... uma simples mudança de senha corrigiu meus problemas de autenticação do Gmail. alguém no google provavelmente deveria consertar isso. ;)
Jason R
Eu estava enfrentando o mesmo problema. Eu já habilitei lessecureapps, mas não vai consertar. Simplesmente mudei minha senha e funcionou perfeitamente. :)
Nikhil Sahu
13

A solução acima forneceu as configurações corretas (que eu já tinha), mas não resolveu o problema. Depois de tentativas contínuas, continuei recebendo o mesmo erro. Acontece que eu tive que "limpar o CAPTCHA" da web. Consulte a documentação do gmail para obter detalhes.

Você também pode ir direto para a página "limpar o CAPTCHA" aqui .

Desculpe-Im-um-N00b
fonte
1
Link direto para a página "limpar o CAPTCHA": accounts.google.com/DisplayUnlockCaptcha
tmr08c
2

Muito mais tarde, mas apenas no caso de ajudar alguém .. Acabei de ligar para a Central de Ajuda do Google Apps e eles foram instruídos a alterar a configuração de lesssecureapps (como todos os outros), mas também a alterar a porta para 465.

No meu caso, isso funcionou!

Alejandro Sherwell
fonte
0

Olá, isso também funcionou para mim e se alguém ainda estiver tendo problemas, experimente.

Certifique-se de ter figaro em seu gemfile. Para salvar informações confidenciais, como nome de usuário e senha, como variáveis ​​de ambiente

gem 'figaro'

E em seu config / environment / development.rb, cole os códigos abaixo usando smtp como método de entrega

 config.action_mailer.delivery_method = :smtp

Configurações de SMTP para gmail

  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" }

Em seu diretório de configuração, crie um arquivo chamado application.yml e adicione os códigos abaixo.

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

Você deve usar seu e-mail e senha para autenticação no arquivo.

cooxy
fonte
config.action_mailer.default_url_options = {host: "localhost: 3000"}
cooxy
0

Eu também enfrentei o problema e, após algumas pesquisas nas configurações do Gmail, encontrei a solução:

  1. No gmail, vá para as configurações.

  2. Selecione a guia "Encaminhamento e POP / IMAP".

  3. Na seção de acesso IMAP, selecione "Ativar IMAP".

Srinivas
fonte
0

A resposta aceita parece muito antiga, não sei se naquela época existia a seguinte (melhor) solução:

Agora, o envio de emails funciona perfeitamente!

ubugnu
fonte
0

Para resolver esse problema:

  • Se você vir : Net :: SMTPAuthenticationError (535-5.7.8 Nome de usuário e senha não aceitos.) , Você precisa permitir que aplicativos menos seguros façam login em sua conta do Google. Para habilitar o login de aplicativos menos seguros, siga: https://myaccount.google.com/lesssecureapps? . Mas permitirá que todos os aplicativos façam login. Se você deseja personalizá-lo, consulte: https://support.google.com/a/answer/6260879?hl=en

  • Então, pode ser possível que você obtenha Net :: SMTPAuthenticationError (534-5.7.14) , portanto, para resolver isso consulte: pli = 1http: //www.google.com/accounts/DisplayUnlockCaptcha. Depois disso, clique em continuar na página para ser redirecionado. Ele verificará seu Captcha e seu aplicativo será verificado para usar sua conta do Google para enviar e-mails.

NOTA: Certifique-se de estar usando as credenciais corretas de sua conta do gmail.

Se você não estiver disposto a permitir todos os aplicativos, consulte: https://support.google.com/a/answer/6260879?hl=en . No link, vá para Usar alternativas para aplicativos menos seguros , isso o guiará para uma maneira alternativa de permitir o acesso de aplicativos menos seguros à sua conta do Google.

Yash Dubey
fonte
-1

Tive o mesmo problema e após algumas tentativas e erros, cheguei a esta resolução que é uma opção para ser habilitada no google:

Clique em https://www.google.com/settings/u/0/security/lesssecureapps

Habilite 'Acesso para aplicativos menos seguros' aqui, fazendo login com o endereço de e-mail fornecido na configuração smtp.

Mirza Vu
fonte