問題
Railsチュートリアル第11章の本番環境でのメール送信を進めていて、本番環境でサインアップ後にエラーに見舞われました。
まず、Herokuのlogを確認します。
$ heroku logs
下記のエラーが出ていました。
[1fdfdc3a-013efafafafafaafafaa2] Net::SMTPUnknownError (could not get 3xx (421: 421 Domain sandbox74837842728438274278.mailgun.org is not allowed to send: Sandbox subdomains are for test purposes only. Please add your own domain or add the address to authorized recipients in Account Settings.
要約すると「このドメインはメール送信を許可していません。」です。
解決策
解決策は、特定のメールアドレスの送信を許可することです。Mailgunを使用しているため、Mailgunのサイトにアクセスします。
HerokuアドオンでMailgunが追加できれいれば、ターミナルで以下のコマンドを入力するとサイトにアクセスできます。Cloud9の場合はブラウザが立ち上がらないので、ターミナルに出力されたURLをコピーしてブラウザに貼り付けます。
$ heroku addons:open mailgun
サイトにアクセスしたら、サイドバーの「Sending」→「Domains」選択し、以下の画像の赤枠の部分をクリックします。
右側にあるテキストボックスに認証したいメールアドレス(実際に使用できるメールアドレス)を入力し、「Save Recipient」ボタンをクリックします。
数分後に入力したメールアドレスに認証用メールが届きます。認証メールから「I Agree」ボタンをクリックし、送信先のメールアドレスとして認証してください。
あとは、このメールアドレスを使用して、Herokuの本番環境でサインアップを行えば成功するはずです。
参考