SendGrid を最速で試す


# はじめに

完全に個人的なメモです！が、案外サクッと確認できなかったので、パブリックに残しておこうという思います。


# SendGrid とは？

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

> SendGridは全世界で利用されているメール配信サービスです。
クラウドサービスのため、アカウントを作成するだけでメールを送信でき、
面倒でコストのかかるメールサーバの構築やメンテナンスは不要です。
メルマガの一斉送信もシステム経由の自動通知メールも、SendGridにお任せください！

手軽にメール機能が使える、つまり自前で専用のメールサーバーを管理しなくて良いのがメリットです。

# SendGrid を試す

## 1. 登録

まずは、アカウントを作りましょう。

https://sendgrid.kke.co.jp/app?p=signup.index

## 2. API Key の作成

ダッシュボードからアクセスするためのキーを作ります。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/ec1e44bd-69c2-5216-bd8d-7039ad78f170.png)

キー名と権限を設定します。試すだけなので一旦は「Full Access」で良いでしょう。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/7cd26e1c-5228-2a15-73b2-c106fa776890.png)

作成されたキーを保存しておきましょう。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/f365df22-0725-ddcc-2b33-54fd3c6b94a2.png)

作成したキーはボード一覧から確認できます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/0d9bb1a0-4e0e-aec2-af35-4fa0a59adcac.png)

## 3. Sender 登録

以下は公式の回答より

https://support.sendgrid.kke.co.jp/hc/ja/articles/29894417403929-2024%E5%B9%B44%E6%9C%881%E6%97%A5%E4%BB%A5%E9%99%8D-Domain-Authentication-%E3%81%BE%E3%81%9F%E3%81%AF-Single-Sender-Verification-Sender%E7%99%BB%E9%8C%B2-%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%A9%E3%81%86%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B

> Domain AuthenticationまたはSingle Sender Verificationが設定されていない場合、2024年4月1日以降はメール送信ができなくなります。

上記をダッシュボードから登録しないと、実装してもエラーが発生します。以下は実際のエラー内容です。

```.json
{
  "errors": [
    {
      "message": "The from address does not match a verified Sender Identity. Mail cannot be sent until this error is resolved. Visit https://sendgrid.com/docs/for-developers/sending-email/sender-identity/ to see the Sender Identity requirements",
      "field": "from",
      "help": null
    }
  ]
}
```

ダッシュボードから登録しましょう。今回は「Single Sender Verification」で進めます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/e7c1032a-2c45-ea14-12c6-cda700d1670e.png)

必要事項を入力してください。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/4716ae93-7a71-5518-2e4d-e820ba99c4f9.png)

特にメールアドレスに関しては**実際に API で使用するもの**を入力してください。ここで登録したメールアドレスのみエラーが出ないようになります。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/d122d5a9-eb88-5b67-a9d1-a5e7c023926b.png)

入力したアドレスに認証のメールが来るので、承認して登録は完了です。


![スクリーンショット 2024-06-28 11.27.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/a3dc39eb-c186-0635-fe4a-65aa52e702ec.png)

## 4. メール送信 API を使う

公式にいくつかのコード例があります。

https://sendgrid.kke.co.jp/about/email-api/

ターミナルから curl コマンドで試すのが早いでしょう。

```.bash
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "personalizations": [
      {
        "to": [
          {
            "email": "YOUR_ADDRESS"
          }
        ]
      }
    ],
    "from": {
      "email": "YOUR_ADDRESS"
    },
    "subject": "Test Email",
    "content": [
      {
        "type": "text/plain",
        "value": "This is a test email."
      }
    ]
  }' \
  https://api.sendgrid.com/v3/mail/send
```

必要な部分は各自で置き換えてください。上記でも記載しましたが `from`の部分は登録したアドレスでないとエラーになります。

コマンドを実行するとメールが届きます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/1ab54b88-6bbe-b743-52d4-677b77be67b2.png)

また、ダッシュボードではリクエスト履歴を見ることができます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175242/50b9ad79-861b-a882-1389-5b1cefc31460.png)


### ※ メールが届かない場合

これはいくつかネットでも同じような情報が見られたのですが、SendGrid はフリープランでは問題があります。

https://www.itreview.jp/products/sendgrid/reviews/87189

> Pro版以外のSendGridは、他企業と共同利用のドメインに割り振られます。そのため、他の利用者が送信レピュテーションを下げる（スパム評価を上げる）と同一ドメインで送信してる全ての共同利用者のメールが送信出来なくなります。
これの問題は、送信している側は正常に送信できたと認識するため、問題に気づきにくい状況になります。

実際、何回かリクエストしてリアルタイムにきたのは１回だけでした。
（いくつかはメールフィルターに入ってしまった）

# 終わりに

フリープランで送れる件数が多いので魅力的だと思っていましたが、届かないという思わぬ罠がありました。

実際のサービスで使う場合は Pro で使うか、設定周りをもう少し何かした方が良さそうでした。