【Heroku】SendGridでメール送信
SendGrid というAdd-onを使用して、Heroku上でメール送信できるようにする手順を紹介します。
ローカルでメール送信テスト用の環境づくりは下記が参考になれば。
1. Heroku にログインし、SendGrid を追加
Overviewタブで「Configure Add-ons」をクリック
Add-onsの検索で「SendGrid」を検索しクリック
無料プランで「Provision」をクリック
下記のように、Add-onsにSendGrid が表示されればOK
※もし、下記の警告が出た場合、クレジットカード登録と、電話番号登録が必要
※クレジットカード登録は下記を参考に。
※電話番号登録はhttps://heroku.com/verifyにアクセス後、下記の画面でSMSによる認証
2. SendGridのKeyを取得し、Heroku環境変数に設定
SendGridをクリックし、SendGridのダッシュボードへ移動
初めてダッシュボードへ移動した時に、送信元となるメールアドレスを登録。
そのメール宛に確認URL付きメールが届くので、URLをクリックすると登録完了
ダッシュボードのSettingsタブのAPIKeysをクリック
右上の「Create API Key」をクリック
API Key Nameに任意の名前(test など)を記入し、「Create & View」をクリック
Keyが表示されるので、どこかにメモする。(この時しかKeyを確認できないため、必ずメモすること!)
コンソールで下記Herokuコマンドを実行し、環境変数にKeyを設定
heroku config:set SENDGRID_API_KEY=上記で確認したKey
コンソールで下記Herokuコマンドを実行し、環境変数を確認
heroku config
下記のように、API Key, password, usernameが設定されていれば準備OK
SENDGRID_API_KEY: 上記で設定したKey
SENDGRID_PASSWORD: *****
SENDGRID_USERNAME: *****@heroku.com
3. config/environments/production.rbに設定を記載
下記はgmailを使用時。ドメインやポートは使用する物によって変更
config.action_mailer.default_url_options = { host: example.comなど,appのホスト名)}
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.asset_host = example.comなど,appのホスト名
ActionMailer::Base.smtp_settings = {
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'gmail.com',
:address => 'smtp.sendgrid.net',
:port => 587,
:authentication => :plain,
:enable_starttls_auto => true,
:openssl_verify_mode => 'none',
:ssl => true,:tls => true
}
4. deviseを使っている場合はconfig/initializers/devise.rbの設定も行う
config.mailer_sender = '2.で設定したメールアドレス@gmail.com'
5.上記の設定を行ったファイルをHeroku上にデプロイ
以上ですーー!!
おやすみなさいいいい