(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【SendGrid】フリープランを利用して個人用にcurlでメール送付するメモ

スポンサーリンク

はじめに

SendGridというWebサービスを利用してGmailからメールを送付する流れをメモしておきます。

環境情報
  • curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL

ユーザ登録

上記サイトから会員登録を行います。
「送信元メールアドレス(From)」を入れる箇所がありますが、ここは登録したメールアドレスではなくてもOKでした。

会員登録が完了すれば「SendGridにようこそ!」という題目のメールが登録メールアドレスに届き、ユーザ名が割り当てられます。

利用

ブラウザにてログイン後、ブラウザ操作にてAPIキーを作成します。

"Test" was successfully created and added to the next step.
SG.xxxxxxxxxxxxxxxxxxxxxxxx

あとは以下が構文と表示されるので

curl --request POST \
  --url https://api.sendgrid.com/v3/mail/send \
  --header "Authorization: Bearer $SENDGRID_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{"personalizations": [{"to": [{"email": "test@example.com"}]}],"from": {"email": "test@example.com"},"subject": "Sending with SendGrid is Fun","content": [{"type": "text/plain", "value": "and easy to do anywhere, even with cURL"}]}'

$SENDGRID_API_KEYの箇所に発行されたAPIキーを入れてcurlを叩けばsendgrid.net 経由でメールが届きます。

尚、fromのメールアドレスは登録したメールアドレスにしなければ受信者には届きません。ダッシュボード上は送信済のメールとしてカウントはされますが。

f:id:mtiit:20210112171547p:plain
SendGridのダッシュボードより抜粋

curl -vのログ

ポートは443のみ空いていればOKなのもありがたい。サーバではnginxで受けているようです。

$ curl -v ....
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 169.38.X.X...
* TCP_NODELAY set
* Connected to api.sendgrid.com (169.38.X.X) port 443 (#0)
* schannel: SSL/TLS connection with api.sendgrid.com port 443 (step 1/3)
...
< HTTP/1.1 202 Accepted
< Server: nginx
...
* Connection #0 to host api.sendgrid.com left intact

終わりに

登録には数日かかりましたが、ユーザIDが発行できれば数分あればメールの送信テストまで可能です。
フリープランなので使用に制限はありますが、これは画期的なサービスですね...