/ #heroku 

HerokuのSendgridでNet::SMTPFatalErrorが発生

HerokuにあるアプリへSendGridアドオンをインストールし、メールを送信しようとしたところ、以下のエラーになりました。

Net::SMTPFatalError (550 Cannot receive from specified address : Unauthenticated senders not allowed

これはSMTPFatalError when sending mailにある通り、SendGridの認証が失敗しているため。

自分の場合、以下のような手順で発生しました。

  1. Heroku | Dev Center | Sendgridの通りにSendGridアドオンを設定し、本番用アプリから正しくメールを送れることを確認
  2. 同じリポジトリ(ディレクトリから)Herokuへステージング用環境を作成
  3. ステージング環境からメール送信したら、Net::SMTPFatalErrorが発生

結局、これは新しく作ったステージング環境にSendGridの認証に使う環境変数を設定していないことが原因でした。(本番環境はアドオンをインストールした時点で自動的に設定される)

本番用の環境変数に以下のものがあるので…

$ heroku config --app myapp
(中略)
SENDGRID_PASSWORD   => パスワード
SENDGRID_USERNAME   => ユーザ名@heroku.com

ステージング環境へも設定したら、無事、動きました。

$ heroku config:add SENDGRID_PASSWORD=パスワード --app myapp-staging
$ heroku config:add SENDGRID_USERNAME=ユーザ名@heroku.com --app myapp-staging

Sendgridに限らず、本番環境とステージング環境の環境変数の差違については、きちんと確認しておいた方が良いですね。

Edit(Admin)