Railsを利用してwebアプリケーション開発をしているものです。
SendGridの仕様変更に伴う改修で知恵をお借りしたく思い、質問させていただきました。
ご教授よろしくお願いいたします。
前提・実現したいこと
現在の問題点
現在RailsのActionMailerでSendGridを利用してメール配信を行っているが、その際にユーザー名/パスワードを用いた認証を行っている。
SendGridの仕様変更(※)に伴い、APIキーを用いた認証が必須となるため、ユーザー名/パスワードを利用した認証が行えなくなり、メール配信ができなくなる。
実現したいこと
SendGridのAPIをコールするときの認証の形式を以下のように変更するように改修をしたい。
メール配信の機能はこれまでと同じでよく、SendGridの仕様変更後に配信が失敗しないようにしたい。
・変更前:ユーザー名/パスワードを利用した認証
・変更後:APIキーを利用した認証
質問1
以下の通り修正予定だが、他に修正箇所や懸念事項はないか。
現在のソース
{アプリルート}/config/initializers/mail.rb
ruby
1ActionMailer::Base.delivery_method = :smtp 2ActionMailer::Base.smtp_settings = { 3 address: 'smtp.sendgrid.net', 4 domain: 'gmail.com', 5 port: 587, 6 user_name: 'xxxx@kke.com', 7 password: 'yyyyzzzz', 8 authentication: 'plain', 9 enable_starttls_auto: true, 10} 11ActionMailer::Base.raise_delivery_errors = true
※ user_nameとpasswordは実際はconfig/settings.ymlに記載していますが、わかりやすくするため直接記載しています。
修正後のソース
{アプリルート}/config/initializers/mail.rb
ruby
1ActionMailer::Base.delivery_method = :smtp 2ActionMailer::Base.smtp_settings = { 3 address: 'smtp.sendgrid.net', 4 domain: 'gmail.com', 5 port: 587, 6 user_name: 'apikey', 7 password: '{SendGrid管理画面から発行したAPIキー}', 8 authentication: 'plain', 9 enable_starttls_auto: true, 10} 11ActionMailer::Base.raise_delivery_errors = true
※ {}で囲っている部分は変数を意味しています。
質問2
ユーザーID/パスワード認証の時の同じことができれば問題ないが、APIキー発行の際は以下の設定で問題ないか。
・API Key Permissions
「Restricted Access」を選択
・Access Details
「Mail Send」のみFull Accessにし、それ以外は全てNo Accessにする。
補足情報(FW/ツールのバージョンなど)
Rails : Gemfile.lockは以下の通り
rails (>= 5.0.0, < 5.2.0)
ActionMailer : Gemfile.lockは以下の通り(2リポジトリあるので、2つ記載します)
actionmailer (5.1.4) actionpack (= 5.1.4) actionview (= 5.1.4) activejob (= 5.1.4) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0)
actionmailer (5.1.6) actionpack (= 5.1.6) actionview (= 5.1.6) activejob (= 5.1.6) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0)
あなたの回答
tips
プレビュー