Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

RailsとSendGridでメール送信をした話

More than 3 years have passed since last update.

業務でSendGridを導入しました。
色々と調査したことを忘れないように残していきます

僕が実施したこと
  1. アカウント登録申請
  2. RailsからSendGrid経由でのメール送信
  3. Whitelabelの登録
  4. サブユーザの作成
  5. IPウォームアップについて

1. アカウント登録申請

Freeプランでもアカウント登録時の審査があります。
利用目的をきちんと書かないと駄目です。
僕が申請したときの文章は↓みたいな感じ。

利用目的
  コンテンツマネジメントシステムで作成したアンケートフォーム回答時の自動返信メールでの使用を想定しています
送信数
  開発・検証用のため未定です
宛先の入手方法
  開発・検証用のため未定です

僕は朝一で申請を出したところ、夕方にはアカウントが発行されました。
有料プランの場合は利用目的についてあれこれ聞かれる場合があります。
利用目的が利用規約(二次利用についてなど)に触れていたりすると連絡をとりあう必要があります

2. RailsからSendGrid経由でのメール送信

SendGrid経由でメールを送信する方法は2つあります。

  • SMTPとして利用する
  • APIとして利用する

僕が利用したのはSMTPの方です。
今回はそちらの方を説明します。

SMTPとしての利用方法

テクニカルなことは一切ありません。
SMTPのアドレスをSendGridのものに変更するだけです。
Gem等のインストールも必要ありません。

config/environments/development.rb
# これはGmail用です
config.action_mailer.smtp_settings = {
  :enable_starttls_auto => true,
  :address => 'smtp.gmail.com',
  :port => '587',
  :domain => 'smtp.gmail.com',
  :authentication => 'plain',
  :user_name => 'Gメールのアドレス',
  :password => 'Gメールのパスワード'
}

これを↓に変えます

config/environments/development.rb
# こっちがSendGrid用です
config.action_mailer.smtp_settings = {
  :user_name => 'SendGridのユーザ名',
  :password => 'SendGridのパスワード',
  :domain => 'y',
  :address => 'smtp.sendgrid.net',
  :port => 587,
  :authentication => :plain,
  :enable_starttls_auto => true
}

これだけでSendGrid経由でメールを送信出来るようになります。
簡単でしたでしょう?

3. Whitelabelの登録

前項でSendGrid経由での送信は出来るようになったと思いますが、
それだけだと受信者から見えるFromアドレスには、SendGrid経由と表示されてしまいます。

スクリーンショット 2016-07-01 12.01.02.png

理由をものすごく簡単に言うと、
Fromアドレスのドメインと実際の送信元のアドレスのドメインが異なっているためです。
詳しくはDKIM認証でぐぐってみてくださいm(_ _)m
これを回避するためにはWhitelabelの登録という作業が必要です。
気にしない人はそのままで大丈夫です(笑)

Whitelabelを簡単に言うと、
使用するドメインをSendGridに登録して、
あたかもそのドメインからメールを送信しているようにすることです。

やることはWhitelabelの登録後、SendGridから指定されたCNAMEレコードを、使用するドメインのDNSに登録するだけです
登録画面はSettings > Whitelabels > Domains > AddWhitelabelにあります
サブドメイン名は他で使用していなければ任意だそうですが、推奨はemem1だそうです(理由はわかりません。ごめんなさいm(_ _)m)
AutomatedSecurityは基本的にはONにしてください。
理由はここに書いてあるとおりです

スクリーンショット 2016-07-13 10.37.28.png

Whitelabelを登録すると↓ような画面に登録しないといけないCNAMEレコードが表示されます

スクリーンショット 2016-07-13 10.37.12.png

Whitelabelを正常に登録すると、SendGrid経由という表記は消えます

スクリーンショット 2016-07-01 12.03.56.png

4. サブユーザの作成

親アカウントに紐づく子アカウントです
アカウント毎に到達率などを取得できるため、使用方法毎にサブユーザを作成することが推奨されています。
サブユーザの作成には有効なメールアドレスが必要です。
送信可能件数は親子全てのアカウントの合計値なので、サブユーザを作成したところで送信可能件数が倍になるわけではありません。

5. IPウォームアップについて

特定のIPからいきなり大量のメールを送信するとそのIPが各ISPによってブロックされることがあるそうです。
そのため、一日毎に徐々にメールの送信数を増やしていくというIPウォームアップという作業が必要になる場合があります

新規でWebサービスを開発してそこで利用する場合は、特に必要のない場合が多いです。
ユーザ数の増加に伴う送信数の増加で自然とIPウォームアップになっているからです。

既に稼働しているサービスのメール機能をSendGridに載せ替える場合、
またはメール機能リリース直後からある程度の送信数を見込んでいる場合は必要かどうかを問い合わせ方が無難です

ちなみに、一日100〜400件程度のトランザクションメールの場合はIPウォームアップは不要とのことです(100%ではないようですが。)

余談

サポートからの回答はかなり早いです
アカウント作成は当日のうちに作成されました(3営業日以内という話はなんだったのか)
その他の問い合わせに対する回答もすぐに来ます
翌営業日中に回答致しますと言っておきながら30分で回答が来た時はびっくりしました

TekkaMK
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away