Twitterでよく「HerokuからSendGridが使えなくて困っている」というのを見かけるので、実際どんな感じなのか試してみました。
Herokuのコマンドと画面でそれぞれ10回ぐらいSendGrid Add-onsを試したところ、8割は成功で
・メールが送信できる
・宛先にも届く
という結果でした。
残り2割は以下の1と2でした。私は再現できませんでしたが、3に該当するケースもあるようです。
- SendGridにログインできない。
- SendGridにログインできる。APIキーを作れてメールの送信はできるが宛先に届かない。一度ログアウトするとログインできなくなる。
- SendGridにログインできる。APIキーを作成できる、メールの送信はできるが宛先に届かない。ダッシュボード上に「Your account has been suspended. Please contact Support to regain access. 」のエラーがでる。
なんでいきなり使えないの?と不満に思われる方も多いと思いますが、SendGridではスパムメール対策のためにアカウントを次の状態にすることがあります。
・Suspension...送信リクエストは受け付けるがメールは送信されない状態
・Ban...アカウントが凍結してまったく使えない状態
Heroku経由だと誰でも簡単にアカウントが作成できてしまうため、作成後に一定の確率で上記の状態にしているように見えます。(私の推測です)
今回の記事では、1〜3の問題を解決する方法と、Heroku以外のアカウントを使って回避する方法を紹介します。
SendGridにログインできない(1のケース)
確認したこと
Add-onsを追加後、通常はHerokuのOverviewまたはResourcesからSendGridにログインできます。
成功するとSendGridのダッシュボードが表示されます。
1のケースでログインできないときは「sendgrid.comへのアクセスが拒否されました」と表示されます。(キャプチャはGoogle Chromeです)一瞬、ネットワークが切れたのかと思いました。
クリックした後の認証が何らか失敗しているだけなのかな?と思って、ユーザ名とパスワードを調べてログイン画面で試しましたがダメでした。
ちなみにユーザ名とパスワードは以下で確認できます。
コマンドの場合
heroku config:get SENDGRID_USERNAME -a herokusendgrid(アプリ名)
heroku config:get SENDGRID_PASSWORD -a herokusendgrid(アプリ名)
画面の場合
「Settings」で「Reveal Config Vars」ボタンを押すと表示されます。
解決方法
ログインできないので、どうしようもないです。一番早いのはアプリごとまるっと削除して作り直すことでした。
ちなみにアプリごと再作成するのではなくAdd-onsのみの再作成でいけないか試したのですが、ダメでした。これをやると次のエラーになります。
Item could not be created:
An error was encountered when contacting the add-on partner to create sendgrid:starter: Error Provisioning User - User status - banned
エラーメッセージを見るとアカウントがbanされた状態に当たり、Add-onsだけを再作成しても変わらないようです。
SendGridにログインできてAPIキーは作成できるがメールは送れない。一度ログアウトするとログインできなくなる。(2のケース)
一見問題がないように見えるため、個人的にはこのケースが一番厄介だと思いました。
確認したこと
1と異なりSendGridにログインができたら、以下の記事を参考にAPIリファレンスのTry it out機能を使ってメールを送信します。
SendGrid 新人成長記 第二回 Web APIを使ってメールを送ってみた | SendGridブログ
応答コードは2xxで成功しているのに、メールが届かない(迷惑メールフォルダ含め)場合はActivity画面をチェックしてください。Activity画面で以下のように何もイベントが発生していない場合は、今回のケースに該当している可能性が高いです。
一度ログアウトして、もう一度ログインしてみてください。1のケースと同じ画面が出たらアウトです。
解決方法
1の解決方法と同じです。アプリを再作成してください。
「Your account has been suspended. Please contact Support to regain access. 」のエラーが出る(3のケース)
解決方法
上記の記事のとおり、米国のSendGridに英語で問い合わせると使える状態にしてくれるようです。
*後述しますが、国内代理店の構造計画研究所では対応できないのでご注意ください。
Heroku以外のアカウントを使う方法
ここまでエラーごとの解決方法について触れてきました。これらの問題について、日本でSendGridの代理店をしている構造計画研究所にサポートを求めようとする方もいらっしゃると思いますが、残念ながらHerokuやMicrosoft AzureのSendGridアカウントはサポート対象外なのでご注意ください。
Azure marketplace等のアドオンとしてSendGridを利用していますが、日本語サポートは受けられますか? – サポート
今回紹介した問題を最初から回避したい場合は、構造計画研究所経由でアカウントを作るという選択肢もあります。その場合はHerokuと異なり、アカウントの審査があるので発行されるまでのスピードはHerokuに劣ります。その代わり、発行されたアカウントでは今回の問題に当たることなく使えます。(もちろん悪い送信をして、SendGridから止められることはあります。あくまでアカウント取得した直後に使えない状態となることはない、という意味です)