Rails 튜토리얼 11장 SendGrid 냉동 문제 해결

추가 사항: Rails 자습서의 텍스트에서 사용된 SendGrid 애드온은 Mailgun으로 변경되었습니다. 따라서, 이하의 대응을 할 기회는 없어질까 생각합니다🙏 지금까지 SendGrid 애드온으로 잘 되지 않았던 분도, Mailgun 버젼으로 재챌린지 해 보세요 👌✨
참고 : Rails 자습서 도움말

Rails 튜토리얼 11장에서는 프로덕션 환경에서 이메일을 보낼 때 SendGrid를 Heroku에 추가해야 합니다.

준비: SendGrid 계정이 동결되었는지 확인



프로덕션 환경에서 메일 전송을 한 후, 이러한 화면이 나온다.
heroku logs --tail 로 로그를 확인. 메일의 문면 로그 후에, 이하와 같은 로그가 포함되어 있으면 동결된다.
Net::SMTPAuthenticationError (535 Authentication failed: account disabled

메일 문면의 로그가 없는 경우는, 다시 한번 코드의 재검토를 하는 것이 좋을 것 같습니다 💦

해결 방법



미국의 SendGrid에 영어로 문의하면 사용할 수 있는 상태로 해주는 등의 정보가 많은 것 같습니다만, 자력으로 곧바로 해결할 수 있습니다.

1. 현재 Heroku 앱 삭제



Heroku의 설정 하단에서 삭제합니다.



2. 새로 Heroku 앱 만들기



htps : //이다 sh보아 rd. 헤로쿠. 이 m/아 ps 에서 Create new app 합니다. 이름은 변경하는 것이 확실할까 생각합니다.


3. production 환경의 SMTP 설정에 URL을 추가하고 git push



Rails 튜토리얼 11.4의 "Rails production 환경에서 SendGrid를 사용하는 설정"의 host = '<your heroku app>.herokuapp.com' 부분에 새로운 Heroku URL을 기입하고 git push 해 둔다.

config/environments/production.rb
Rails.application.configure do
  .
  .
  .
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  host = '<your heroku app>.herokuapp.com'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.sendgrid.net',
    :port           => '587',
    :authentication => :plain,
    :user_name      => ENV['SENDGRID_USERNAME'],
    :password       => ENV['SENDGRID_PASSWORD'],
    :domain         => 'heroku.com',
    :enable_starttls_auto => true
  }
  .
  .
  .
end

4. remote 먼저 새로운 Heroku git URL 설정하기



URL은 Heroku Settings 페이지에서 확인할 수 있습니다.


$ heroku git:remote -a https://git.heroku.com/〇〇.git

# 正しく設定されたか確認
$ git remote -v

5. Heroku 에 push 한다


$ git push heroku
$ heroku run rails db:migrate

6. 마지막으로 SendGrid 추가 기능


$ heroku addons:create sendgrid:starter

# Herokuの環境変数を表示したい場合
$ heroku config:get SENDGRID_USERNAME
$ heroku config:get SENDGRID_PASSWORD

이상으로 완료입니다. 새로 만든 프로덕션 환경에서 메일을 보낼 수 있는지 시도해보십시오 💌

덧붙여 : 한번 사용할 수 있게 되어도, 잠시 지나면 또 동결하고 있는 일이 있습니다. SendGrid의 보안 사정일지도 모르지만, 같은 단계에서 앱을 다시 만드는 것이 빠르다 😥

참고 : SendGrid - 계정 동결의 흐름과 해제 방법에 대해 알려주세요.

계정이 동결될 가능성이 높은 경우는 다음과 같습니다.
  • SendGrid 자격 증명 (예 : 비밀번호, API 키 등)이 공개 위치에 있음을 발견 한 등 보안 위험을 이유로하는 경우
  • 존재하지 않는 목적지로 보내기 (Bounce) 또는 잘못된 목적지로 보내기 (Invalid)와 같은 평판이 떨어지는 이유.
  • 급격한 송신량의 증가를 검지한 등, 계정의 부정 이용이 의심되는 경우
    계정 정지는 이러한 심각한 상황을 방지하기 위한 조치이기도 합니다.
  • 좋은 웹페이지 즐겨찾기