【SendGrid×Heroku】最近2FA認証のせいでメールが送信できない問題が急増している件

Sendgridで2FA認証をオンにしたときに、アプリの構成を更新する必要があることに気づかなく、Rails6で作成したWebアプリからメールが届かなくなっていました。(新規会員登録などのメール送信が含まれるボタンは500エラーになる)

この件について、解決方法を残しておきます。

前提

原因を調べていると以下については、問題ありませんでした。

  • 去年まで問題なくメール送信ができていた
  • その後ソースコードを触っていない
  • ローカルではGmailで送信できる

原因

どうやら、最近はSendgridで2FA認証をオンにする必要があり、そのせいでアプリの構成を更新する必要があるらしいです。

Rails6でのアプリになりますが、大方、他の言語でも似たような設定をいじるだけです。

app/config/environments/production.rb(以前のソースコード)

  config.action_mailer.default_url_options = { :host => 'https://ドメイン.com' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    # SendGrid
    :enable_starttls_auto => true,
    :address => "smtp.sendgrid.net",
    :port => 587,
    :domain => "heroku.com",
    :authentication => :plain,
    :user_name => ENV['SENDGRID_USERNAME'],
    :password => ENV['SENDGRID_PASSWORD'],
  }

Herokuのconfig

SENDGRID_API_KEY:         SG.8jay....API Key(省略)
SENDGRID_PASSWORD:        SendGridのパスワード
SENDGRID_USERNAME:        SendGridのメールアドレス@kke.com

解決

上記の設定の構成が少し変わるので、以下のように変更する必要があります。

SENDGRID_PASSWORD:        SG.8jay....API Key(省略)
SENDGRID_USERNAME:        apikey

新しい構成では、パスワード(SENDGRID_PASSWORD)にAPI Keyを入力して、ユーザー名(SENDGRID_USERNAME)にはapikeyと入力するようです。

これで僕の場合は、正常にメールが送信されるようになりました!

他にもこんな記事があります!