Rails에서 gmail로 메일을 보내려고했지만 smtp 인증 오류가 발생하여 막혔을 때의 해결 방법

4692 단어 SMTPRailsgmail
여러 번 ActionMailer에서 사용자가 등록한 후 메일을 보낼 수 있도록 시도했습니다. 여러가지 조사해 좀처럼 해결할 수 없었지만 겨우 할 수 있었기 때문에, 자신이 어떤 식으로 gmail나 Rails를 설정해 해결할 수 있었는지를 간단하게 써 두고 싶다고 생각했습니다.

그건 그렇고, heroku에서 배포하고 있습니다.

해결 방법


  • config/environments/production.rb 등의 설정
  • gmail의 2 단계 인증 설정
  • 기타 보안 설정

  • 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번째를 해 본 것이 좋다고 생각합니다.


  • 이것도 정직은 관계할지 어떨지는 모르지만, 이것도 괴롭혔습니다. gmail 계정의 받은편지함 화면에서 톱니바퀴 버튼을 누르고 '설정'을 누릅니다. 메일 전송 및 POP/IMAP 탭을 눌러 IMAP를 활성화합니다.
  • 2단계 인증이 설정되어 있으면 사용할 수 없는 것 같습니다만, 이것도 관계하는 것 같습니다. 안전하지 않은 앱 : 여기서 설정을 "켜기"로 설정합니다. 위의 대응으로 메일을 보낼 수 없으면 한 번 2단계 인증을 풀고 나서 해도 좋을지도 모릅니다.

  • 요약



    확실히 이것이다! 라고 말할 수 없어서 죄송합니다만, 어쨌든 위의 대응으로 해결할 수 있었습니다.
    간단히 말하면,
    1. gmail에서 2단계 인증으로 만든 비밀번호를 환경 변수로 설정
    2. 기타 gmail 보안 변경

    좋은 웹페이지 즐겨찾기