Closed14

Resend入門

keitaknkeitakn

概要

APIでメール送信を行う事が出来るサービス。

https://resend.com/overview

競合サービスとして SendGrid がある。

https://resend.com/blog/introducing-resend

What problem are we solving?
We're building a communications platform, and we're starting with email.
The idea is for you to send messages with easy-to-use APIs/SDKs without having to worry about emails >going to the spam folder.
Think of it as a next-generation Sendgrid.

公式がブログで次世代のSendGridと思って欲しいと書いている。

実際に評判も良いので今回はこれを使ってみる。

keitaknkeitakn

アカウント作成

以下からアカウントを作成する。
自分はこのような開発関連のサービスは可能であればGitHubアカウントで登録するようにしているのでGitHubで登録を行う。

https://resend.com/login

初回ログイン後、組織名の入力を求められるので何でも良いので入力する。

ちなみに同じメールアドレスで複数の組織には所属出来ない形になっているので、会社等の特定の組織でアカウントを作る場合はその会社の専用メールアドレスでアカウントを作成するのが無難。

keitaknkeitakn

送信テスト

まずは簡単なメール送信を試してみる。

以下から「+Create API Key」を押下してAPIキーを作成する。

https://resend.com/api-keys

名前は適当でメールの送信だけ出来れば良いので権限は「Sendding access」を選択、ドメインはまだないのでAll domainsでOK。

re_ から始まるAPIキーが発行されるのでコピーしておく。

以下のリクエストを行いメール送信のテストを行う。

# $RESEND_API_KEY には先程作成したAPIキーを指定
curl -v  \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $RESEND_API_KEY" \
-d '
{
  "from": "onboarding@resend.dev",
  "to": "自分のメールアドレスを指定",
  "subject": "Resend Test Mail",
  "html": "<p>Congrats on sending your <strong>first email</strong>!</p>"
}' \
https://api.resend.com/emails | jq

以下のレスポンスが返ってくる。

< HTTP/2 200
< ratelimit-policy: 10;w=1
< ratelimit-limit: 10
< ratelimit-remaining: 9
< ratelimit-reset: 1
< content-type: application/json; charset=utf-8
< content-length: 45
< date: Mon, 05 Feb 2024 14:49:06 GMT
< server: railway
<
* Connection #0 to host api.resend.com left intact
{"id":"UUID形式の値"}

メールも確認したところ問題なく送信されていた。

メッセージのソースを確認したところ、SPF、DKIM、DMARCを全てPASSしている。

最近ではGmailが迷惑メールポリシーを強化した事もあり、このあたりの設定は必須になっているので、これをサービス側で担保してくれるのはとても楽。(これはSendGrid 等の他のサービスを使った場合も同じ事が言える)

keitaknkeitakn

ちなみにレスポンスの id は以下のログからも確認出来る。

https://resend.com/logs

ただし id での検索は出来ないようだ。

ただAPI Keyごとに絞り込んだりも可能なのでAPI Keyは用途毎に細かく分けたほうが良さそう。

keitaknkeitakn

独自ドメインの設定

onboarding@resend.dev を利用したメール送信は自身のアドレスに対してしか実行出来ない。

本格的に運用する為には独自ドメインの登録が必須となる。

こちらを見ながら進めていく。

https://resend.com/docs/dashboard/domains/introduction

keitaknkeitakn

SPF, DKIM, DMARCの設定に必要なDNSレコードを追加する。

最近Gmailの迷惑メールポリシーが強化されこれらの設定がないとメールが届かない可能性が高い、よってこれらの設定は必須。

これらの設定が簡単に出来るのもResendのようなサービスを利用するメリット。

ちなみに作成したドメインのページをResendで見ると以下のようにどのようなレコードの追加が必要か教えてくれる。

以下はドメインを email.exmple.com で登録した時に例。

自動でDNS Providerの設定も読み込んでくれるのでとても親切。

この設定に従いCloudflare側にMXとTXTレコードを追加していく。

keitaknkeitakn

CloudflareでDNSレコードの登録が終わったら画面の右上付近にある「Verify DND Records」を押下すると認証が開始される。

以下のような表示になるがしばらく待つと認証が完了する。

keitaknkeitakn

認証完了画面

これで独自ドメインでメールの送信が可能になるハズ。

keitaknkeitakn

DMARCの設定

こちらもGmailのガイドラインでは必須になっているので必ず設定する。

https://resend.com/docs/dashboard/domains/dmarc

ドメインが email.exmple.com の場合、以下のようなDNSレコードを追加する。

dmarcreports@example.com の部分はDMARCのレポートを送信するメールアドレスに置き換える。

Name: _dmarc.email
Type: TXT
Value: v=DMARC1; p=none; pct=90; rua=mailto:dmarcreports@example.com

keitaknkeitakn

DMARCの注意点

rua= の部分は設定したドメイン名と別のドメインになる場合は送信先のメールアドレスのドメインのDNSレコードに以下を追加する必要がある。

以下は送信元アドレスが blue.com でDMARCのレポートの送信先が red.com の場合。

Name: blue.com._report._dmarc.red.com
Type:TXT
Value: v=DMARC1

この点に関しても以下のドキュメントに記載してある。

https://resend.com/docs/dashboard/domains/dmarc

keitaknkeitakn

SPF, DKIM, DMARCの設定を確認

Gmailだと受信ボックスの「メッセージのソース」から確認可能。

SPF, DKIM, DMARCを全てPASSしていれば問題ない。

keitaknkeitakn

DMARCが通っている事を確認後は p=none; の部分を推奨設定の p= quarantine; あたりに変えておく。

このスクラップは2024/02/08にクローズされました