プログラミング / ruby
Resendで無料のEメール送信サービスを使ってみた
Xでシェア
ON AIR
0:00
--:--
RADIO
メールってめんどくさいですよね。
多くのIaaSは自社のVMからインターネット向けの25番ポートを遮断してますし、VMから自前でメール送信するなら、まずはそれを開いてもらえるように申請から始めなくてはいけません。
それが通っても、今度はDKIMやらSPFやら設定して、それがOKでもまだメールが届かないことがあったりします。
で、最近は自前サーバーから直接メールを送るパターンはかなり減ってきてて、クラウドサービスのマネージドサービスを使って送る場合がほとんどだと思います。
Resendの良い点
メール送信サービスのResendの良い点は以下の3つに集約されます。
- 無料枠がある
- HTTP API でメール送信できる
- 主要言語(もちろんRubyも!)向けに公式からライブラリが提供されている
主要なメールサービスの比較表が以下になります。
ResendはBrevoやMailjetに比べると無料利用枠がすくないですが、HTTP API でおくれるという点は大きいですね。
| サービス | 無料送信枠 | 主な制限・注意点 | 向いている用途 |
|---|---|---|---|
| Brevo | 300通/日 | 未使用枠の繰越なし。無料プランでもトランザクションメールを利用可能 | 小規模な本番環境、通知メール、メルマガ併用 |
| Mailjet | 6,000通/月、200通/日 | 1,000コンタクト。API、SMTP Relay、Webhookを利用可能 | 月間通数を確保したい小規模サービス |
| Resend | 3,000通/月、100通/日 | 無料枠は1ドメイン。REST API、SMTP、公式SDK対応。送受信メールが枠に算入 | Next.js、Node.jsなどモダンなWeb開発 |
| Elastic Email | 3,000通/月、100通/日 | Email API/SMTP対応。無料開始時はカード不要 | API中心のトランザクションメール |
| Mailgun | 100通/日 | 1カスタムドメイン、ログ保持1日、APIキー2個。カード不要 | 開発・検証、小規模API送信 |
| SMTP2GO | 1,000通/月、200通/日 | ドメイン未認証時は25通/時。レポート保持5日 | SMTPを使う既存システム、複合機、サーバー |
| MailerSend | 500通/月、100通/日 | アカウント承認後に利用可能。無料プランでもカード情報の登録が必要 | 少量のアプリ通知、開発環境 |
| Postmark | 100通/月 | Developerプラン。期限なしだが、実質的に開発・接続テスト向け | 配信品質を重視するシステムの事前検証 |
個人的には1もさることながら2の HTTP API が大きいです。
前述のとおりクラウド環境ではメール送信ポートが遮断されてたりしますし、HTTP APIで送りたいなーーと以前から思ってました。
あと、無料枠があるのは普通にうれしい。
自分のように「ブログにコメントが付いたとき」のような、ごく少数のメール送信を想定している場合は非常に助かります。
Ruby on Rails でのメール送信
Rubyで送る場合、最もシンプルな送り方は以下の通りです
require "resend"
Resend.api_key = "re_xxxxxxxxx"
params = {
"from": "[email protected]",
"to": "[email protected]",
"subject": "Hello World",
"html": "<strong>it works!</strong>"
}
sent = Resend::Emails.send(params)
puts sent
すごいシンプルな仕様ですね。
Railsで送る場合は Action Mailer と連携できます。
# Add this to config/initializers/mailer.rb:
Resend.api_key = "re_xxxxxxxxx"
# Add this to config/environments/environment.rb:
config.action_mailer.delivery_method = :resend
# Send the email
class UserMailer < ApplicationMailer
default from: '[email protected]'
def welcome_email
@user = params[:user]
@url = 'http://example.com/login'
mail(to: ["[email protected]"], subject: 'Hello World')
end
end
自分にとっては理想的です。
さっそくこのブログにも使ってます。しばらく使ってみてよさそうなら別システムで有料契約も検討します。
コメント
まだコメントはありません。