Rails에서 gmail로 메일을 보내려고했지만 smtp 인증 오류가 발생하여 막혔을 때의 해결 방법
그건 그렇고, heroku에서 배포하고 있습니다.
해결 방법
config/environments/production.rb 등의 설정
production.rb
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
host = 'website.com'
config.action_mailer.default_url_options = { host: host }
# development.rbだと、上の2行じゃなくて下の一行
# config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:user_name => ENV["EMAIL_HIDDEN"],
:password => ENV["PASSWORD_HIDDEN"],
:authentication => :plain,
:enable_starttls_auto => true
}
환경 변수의
ENV["EMAIL_PASSWORD"]
를 설정하려면 figaro이라는 gem을 사용하십시오. gmail 계정 정보를 여기에서 설정합니다.(figaro의 사용법을 생략합니다)
heroku를 사용하면,
$ heroku config:set EMAIL_HIDDEN=メール
라는 바람에 환경 변수를 설정하십시오.자신의 gmail과 해당 계정의 비밀번호를 설정하면 자신에게 이메일을 보낼 수 있습니다. 다만, 다른 사람은 차단됩니다.
gmail의 2단계 인증 설정
그럼, 다른 사람에게 메일을 보내려면 어떻게 하면 좋을까?
지금까지 gmail의 2단계 인증을 사용하도록 설정하지 않은 경우 사용 설정하세요.
gmail의 navbar에서 9 개의 은색 사각형 dropdown을 누르고 계정을 클릭하십시오.
'로그인 및 보안'에서 'Google에 로그인'을 클릭합니다.
「2 단계 인증 프로세스」를 눌러, 수속에 따릅니다.
그렇다면 2 단계 인증 프로세스 아래의 앱 비밀번호로 비밀번호를 얻으십시오.
이 암호를 환경 변수로 설정하십시오! ! (공백없이)
즉, 위에 있던 production.rb의
ENV["EMAIL_PASSWORD"]
는 취득한 패스워드로 변경하지 않으면 안됩니다.이제 gmail에서는 자신의 사이트를 사용할 수 있는 응용 프로그램으로 등록되어 메일의 비밀번호가 아니라 그 응용 프로그램의 독특한 비밀번호를 경유하여 메일을 보내게 됩니다.
기타 보안 설정
내가 막힌 곳은 위의 2단계 인증 설정이었지만, 다음 설정도 필요 같아요.
・정직은 잘 모르지만, 이 링크 로 Google에의 계정을 허가합니다.
다음의 2개는 필요한지 어떤지는 모르지만, 특히 1번째를 해 본 것이 좋다고 생각합니다.
요약
확실히 이것이다! 라고 말할 수 없어서 죄송합니다만, 어쨌든 위의 대응으로 해결할 수 있었습니다.
간단히 말하면,
1. gmail에서 2단계 인증으로 만든 비밀번호를 환경 변수로 설정
2. 기타 gmail 보안 변경
Reference
이 문제에 관하여(Rails에서 gmail로 메일을 보내려고했지만 smtp 인증 오류가 발생하여 막혔을 때의 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gazayas/items/9fe0cce69c2785e8b1b9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)