[ruby-on-rails] Net :: SMTPAuthenticationError when send email from Rails app (on 스테이징 환경)

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. 이로 인해 문제가 내 앱의 구성이 아니라 Google에 있다는 결론에 도달했습니다.

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

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


답변

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

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 에서 설정을 변경하여 귀하의 계정이 더 이상 최신 보안 표준에 의해 보호되지 않도록 할 수 있습니다.


답변

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


답변

다음 링크로 이동하여 https://www.google.com/settings/security/lesssecureapps를 켜십시오.


답변

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

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


답변

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

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


답변

나는 같은 문제가 있었다.


해결책: