Net :: SMTPAuthenticationError when send email from Rails app (on 스테이징 환경)


95

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)

1
나는 실수로 URL을 복사했습니다 (구글은 아마도 우리를 위해 미리 생각했을 것입니다). 내 비밀번호를 입력하고 패널에서 신뢰할 수있는 사이트뿐만 아니라 요청을 할 수있는 가능성을 전환 한 것을 보았습니다.
zmii

답변:


249

나는 똑같은 문제가 있었다 : 이메일은 개발에서 보내졌지만 프로덕션에서는 보내지지 않았다 Net::SMTPAuthenticationError. 이로 인해 문제가 내 앱의 구성이 아니라 Google에 있다는 결론에 도달했습니다.

이유 : Google이 알 수없는 위치에서의 액세스를 차단했습니다 (프로덕션중인 앱).

해결 방법 : http://www.google.com/accounts/DisplayUnlockCaptcha로 이동하여 계속을 클릭합니다 (새 앱 등록을 위해 10 분 동안 액세스 권한이 부여됨). 이 후 프로덕션에서 내 앱이 이메일을 보내기 시작했습니다.)


3
이것이 실제로 문제를 해결하는 올바른 방법입니다 (계정이 위험에 처할 수 있음). 하지만 작동합니다.
zakelfassi

40
또한 여기에서 계정 액세스 허용을 잊지 마십시오 : google.com/settings/security/lesssecureapps
Chauskin Rodion 2014

lesssecureapps다단계 인증을 사용하고 레일스 서버에 앱 전용 비밀번호를 활성화하여 설정 을 피할 수있었습니다 .
크리스 벡

1
아마 더 나은 같은 서비스를 사용하는 드릴을 프로덕션 환경에서 이메일을 보내는
Codebling

lesssecureapps 계정 설정 을 켜고 DisplayUnlockCaptcha 페이지로 이동하여 OK를 누르고 rails를 통해 이메일을 보냈지 만 동일한 오류를 받았습니다 Net::SMTPAuthenticationError ...ContinueSignIn.... 그런 다음 10 분 후에 똑같이 시도했고 작동하기 시작했습니다.
Lev Lukomsky

25

이 솔루션은 저에게 효과적입니다.

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이 귀하의 로그인 시도를 차단하는 것은 사실이지만 https://www.google.com/settings/security/lesssecureapps 에서 설정을 변경하여 귀하의 계정이 더 이상 최신 보안 표준에 의해 보호되지 않도록 할 수 있습니다.


이 작업을 수행하는 방법이 있습니까? 예를 들어 Google에 앱을 등록 할 수 있습니까?
jphager2

24

해결되었습니다! 나는 단순히 암호를 변경 한 내 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
}

1
감사합니다! 이 문제는 나에게 많은 두통을 일으켰고 결국 내가해야 할 일은 이러한 설정을 사용하고 Google 계정 설정에서 보안 수준이 낮은 앱 허용 옵션을 설정 한 후 Google 계정 비밀번호를 변경하는 것이 었습니다.
Corey

'보안 수준이 낮은 앱 허용'을 설정하고 Google에 내 기기 (서버의 IP)를 신뢰하고 24 시간 이상 기다리라고 말한 후 간단한 비밀번호 변경으로 Gmail 인증 문제가 해결되었습니다. Google의 누군가가 아마도 그것을 고쳐야 할 것입니다. ;)
Jason R

나는 같은 문제에 직면했다. 이미 lessecureapps를 활성화했지만 해결되지 않습니다. 나는 단순히 암호를 변경하고 매력처럼 작동했습니다. :)
Nikhil Sahu


13

위의 솔루션은 올바른 설정 (이미 가지고 있음)을 제공했지만 문제를 해결하지 못했습니다. 계속 시도한 후에도 같은 오류가 계속 발생했습니다. 웹에서 "보안 문자를 삭제"해야했습니다. Gmail 문서 참조 를 참조하세요.

여기에서 "보안 문자 지우기"페이지로 바로 이동할 수도 있습니다 .


1
'보안 문자 지우기'페이지에 대한 직접 링크 : accounts.google.com/DisplayUnlockCaptcha
tmr08c

2

나중에 다른 사람에게 도움이되는 경우를 대비해 Google Apps 도움말 센터에 전화를 걸어 lesssecureapps 설정 (다른 모든 사람과 마찬가지로)을 변경하고 포트를 465로 변경하도록 지시했습니다.

제 경우에는 그게 트릭이었습니다!



0

안녕하세요 이것은 저에게도 효과가 있었으므로 누군가가 여전히 문제가 있으면 이것을 시도하십시오.

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

구성 디렉토리에서 application.yml이라는 파일을 만들고 아래 코드를 추가하십시오.

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

파일에서 인증을 위해 이메일과 비밀번호를 사용해야합니다.


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

0

나는 또한 문제에 직면했고 Gmail 설정에서 몇 가지 조사를 한 후 해결책을 찾았습니다.

  1. Gmail에서 설정으로 이동합니다.

  2. "전달 및 POP / IMAP"탭을 선택합니다.

  3. IMAP 액세스 섹션에서 "IMAP 사용"을 선택합니다.


0

받아 들여지는 답변은 매우 오래된 것 같습니다. 그 당시 후속 (더 나은) 솔루션이 존재했는지 모르겠습니다.

이제 이메일 보내기가 완벽하게 작동합니다!


0

이 문제를 해결하려면 :

  • 당신이 볼 경우 인터넷 :: SMTPAuthenticationError (. 535-5.7.8 사용자 이름 및 암호는 않됨) , 당신은 보안 수준이 낮은 앱이 Google 계정에 로그인 할 수 있도록해야합니다. 보안 수준이 낮은 앱 로그인을 사용하려면 https://myaccount.google.com/lesssecureapps? . 그러나 모든 앱이 로그인 할 수 있습니다. 맞춤 설정 하려면 https://support.google.com/a/answer/6260879?hl=ko를 참조 하세요.

  • 그러면 Net :: SMTPAuthenticationError (534-5.7.14)를 얻을 수 있으므로이 문제를 해결하려면 pli = 1http : //www.google.com/accounts/DisplayUnlockCaptcha를 참조하십시오. 그 후 페이지에서 계속을 클릭하면 리디렉션됩니다. 그것은 당신의 확인합니다 보안 문자를 귀하의 응용 프로그램은 이메일을 보내 귀하의 구글 계정을 사용하여 검증 받게됩니다.

참고 : Gmail 계정의 올바른 자격 증명을 사용하고 있는지 확인하십시오.

모든 앱을 허용하지 않으려면 https://support.google.com/a/answer/6260879?hl=ko 를 참조 하세요 . 링크에서 보안 수준이 낮은 앱 에 대한 대안 사용으로 이동하면 보안 수준이 낮은 앱 이 Google 계정에 액세스하도록 허용 하는 다른 방법으로 안내 됩니다.


-1

나는 똑같은 문제가 있었고 시행 착오 끝에 Google에서 활성화 할 수있는 옵션 인이 해결책에 도달했습니다.

https://www.google.com/settings/u/0/security/lesssecureapps를 클릭합니다.

SMTP 구성에서 제공 한 이메일 주소로 로그인하여 여기에서 '보안 수준이 낮은 앱에 대한 액세스'를 활성화하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.