🕊️

次世代の SendGrid !? メール送信プラットフォーム Resend

2023/08/02に公開

気になるサービスを見つけたので、試してみました〜!!

https://resend.com/

Resend

Resend とは

Resend は API 経由でメールを送信することができるサービスです。

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

Think of it as a next-generation Sendgrid.
次世代の Sendgrid と考えてください。

次世代の SendGrid と謳っており、開発者の開発体験を重視したメール送信プラットフォームを目指しているそうです。

料金比較

SendGrid と利用料金の比較をしてみます。

無償利用枠

無償利用枠での1ヶ月あたりメール送信数は以下です。
SendGrid のほうが多く送信できます。

  • SendGrid:12,000
  • Resend:3,000

有償利用枠

メールの送信数が多くなると、 Resend がお得になってくるようです。

1ヶ月あたりメール送信数 SendGrid Resend
40,000 2,300 2,866.36 - $20
100,000 Essentials 4,600 / Pro 12,000 5,016.13 - $35
300,000 30,000 28,663.60 - $200
700,000 59,000 57,327.20 - $400
1,500,000 104,000 100,322.60 - $700
2,500,000 141,000 128,986.20 - $900

https://sendgrid.kke.co.jp/plan/

https://resend.com/pricing/

メールを送信してみる

Send your first email

サインアップを済ませると、 Send your first email 画面が出てきます。

以下のサンプルコードも表示されているで、手っ取り早く cURL で試してみます。

  • Node.js
  • Ruby
  • PHP
  • Python
  • Elixir
  • cURL
curl -X POST 'https://api.resend.com/emails' \
  -H 'Authorization: Bearer {{API_KEY}}' \
  -H 'Content-Type: application/json' \
  -d $'{
    "from": "onboarding@resend.dev",
    "to": "{{TO_EMAIL_ADDRESS}}",
    "subject": "Hello World",
    "html": "<p>Congrats on sending your <strong>first email</strong>!</p>"
  }'

送信成功!

Lambda でメール送信

今回は Python で実装していきます。
AWS コンソールから、Layerを追加して、コードも書き換えてテスト実行します。

Layer を追加する

resend というパッケージを使用するので、Layerにアップロードするための zip ファイルを作成します。

mkdir python
python3 -m pip install -t python  resend
zip -r9 layer.zip python

lambda_function.py

lambda_function.py を以下に書き換えます。

lambda_function.py
import os
import json
import resend

def lambda_handler(event, context):
    resend.api_key = os.environ["RESEND_API_KEY"]

    params = {
        "from": "Sending Test <onboarding@resend.dev>",
        "to": [event['to']],
        "subject": "hello world",
        "html": "<strong>it works!!!</strong>",
    }

    email = resend.Emails.send(params)
    print(email)

    return {
        "statusCode": 200,
        "body": json.dumps({
            "message": "ok"
        })
    }

環境変数の設定

RESEND_API_KEY という環境変数で API Key をセットします。

テストを実行する

イベント JSON を定義して、実行します。

{
    "to": "{{TO_EMAIL_ADDRESS}}"
}

送信成功!!!

React Email と親和性が高そう

React Email というライブラリも開発が進んでいるようで、セットでの利用が想定されていそうです。

https://react.email/

以下の記事がとても参考になりました。

https://zenn.dev/hayato94087/articles/53c0c759a23a19#fnref-37f3-4

まとめ

まず、Resend の WEB サイトやコンソール画面が非常にオシャレで、かっこいい笑

ドキュメントも綺麗で分かりやすいです。

https://resend.com/docs/introduction

Serverless というカテゴリーがあり、Vercel Edge Functions や Supabase Edge Functions
、AWS Lambda のサンプルコードもあるのが、モダンというか next-generation 感を受けました。

ただ、 Rust のサンプルコードがないのが寂しいですね...

次世代の SendGrid となるか、今後の動向を見ていきたいです!!

コラボスタイル Developers

Discussion