IBM Cloudのメール配信サービス（SendGrid）を使ってNode.js、Pythonからメール配信してみた！

# 背景
現在私が担当している案件で一般ユーザー向けのサービスを提供する予定で、ユーザー登録をした際などにメールをユーザーに送信する必要があるとのことで、メール送信サーバーをどうやって調達するかが課題となった。
お客様の方で用意できるメール送信サーバーで使えるものはないということだったので、IBM Cloud内で使用可能なサービスがないのかを調査した結果以下のサービスが利用できそうなので、実際に使えるのかどうか、利用方法はどんな感じかを実際にサービス登録して使ってみたのでこの記事にまとめました。
https://cloud.ibm.com/docs/email-delivery?locale=ja

>E メール配信について
>SendGrid の IBM Cloud E メール配信サービスは、メール・リレー・サービスです。このサービスにより、スマート・ホストを使用してアウトバウンド・メール・サービスのリレーが可能になります。スマート・ホストは、SMTP サーバー、メール・クライアント、または SMTP を処理可能な任意のサービスまたはプログラム言語からの SMTP トラフィックをリレーします。 また、このサービスでは、メトリックの生成、E メール・リストの追跡、E メール・アクティビティー (E メールのバウンス、クリック、ドロップ、オープンなど) の追跡も行います。 このサービスには、ニュースレター支援や認証などの他の機能も用意されています。

*※なお、マニュアルには何が出来るかほとんど記載されていませんが、サポートに問い合わせたところ、IBM Cloud経由でSendGridに作成されたアカウントで選択したアカウント・タイプで使用可能なSendGridの機能はそのまま利用できるとのことです。*

# 登録方法
1. https://cloud.ibm.com/classic/services/emaildelivery にアクセスし、**Order Email Delivery Service**のボタンをクリックする
![screencapture-cloud-ibm-classic-services-emaildelivery-2020-07-15-16_25_22.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/5fd0801d-419d-2165-95eb-771eeab678bf.jpeg)

2. **Account Type**を選択し、**Email Address**、**Username**、**Password**を設定し、**Continue**ボタンをクリックする
**※UsernameとPasswordはSendGridアカウントのユーザー名、パスワードとして使用される。**
![screencapture-cloud-ibm-classic-services-emaildelivery-2020-07-16-10_31_17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/0ff0b7ed-3469-3699-a63b-0e80d2da7db7.jpeg)


3. 登録が完了し一覧に表示されたら、**Actions**より**Access Vendor Portal**を選択し、Send Gridのポータルにアクセスする
![2020-08-04 14_56_27-IBM Cloud __ Email Delivery Service.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/e868c7d6-2d90-6401-c00b-15a4eea24ae4.jpeg)

4. 手順3で設定したUsernameとPasswordでログイン出来ることを確認する。
![screencapture-app-sendgrid-login-2020-07-15-16_55_32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/f3117d52-9848-f78d-9a7f-ddff61f60f1f.jpeg)


# 使い方
1. SendGridのポータルからSetup Guideを開く
![screencapture-app-sendgrid-2020-08-04-15_04_17.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/778788ea-6732-da21-535a-f6d8a0b065bf.jpeg)

2. **Integrate using our Web API or SMTP Relay**横の**Start**を選択する
![screencapture-app-sendgrid-guide-2020-08-04-15_04_34.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/6347608c-7505-1be6-115f-66b2cdf1b91c.jpeg)

3. **Web API**以下の**Choose**を選択する
![screencapture-app-sendgrid-guide-integrate-2020-08-04-15_04_41.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/79ea859e-beff-0f1b-5cad-ec2e7c5d568e.jpeg)

4. 使用した言語横の**Choose**を選択する
![screencapture-app-sendgrid-guide-integrate-langs-2020-08-04-15_04_54.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/e23b5d05-d2a8-d982-9fbd-1b10076ba1e3.jpeg)

5. **My First API Key Name**配下にAPIキー名を入力した上で、**Create Key**ボタンをクリックする
![screencapture-app-sendgrid-guide-integrate-langs-nodejs-2020-08-04-15_05_32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/42aa9470-b43b-6a5b-65a4-7f45a6df031a.jpeg)

6. 後は画面に表示された手順に乗っ取り該当のコードを実装し、実行すればメールが送信される
![screencapture-app-sendgrid-guide-integrate-langs-nodejs-2020-08-04-15_30_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/9fb15113-0e59-c6d4-817a-ecd8792e657a.jpeg)