Python + SendGrid APIでとりあえずメールを送ってみる


はじめに

この記事は、
「SendGrid APIを使ってPythonからメールを送ってみたい」
という願いを持つ方に向けて執筆しています。

既に既出の内容ではありますが、
私の環境では以下の記事の通りにコードを打ってみても
メールが送信できずに、少しハマったので備忘録として残しておきます。

サクッと結論

※SendGridのAPI Key発行&pipでのsendgridのインストールは済んでいる前提で説明します。
 済んでいない方は、上記の記事を参考にしてください。

インストールしているSendGridのverが6.8.0であれば
以下のように記述すればOKです。

send_email.py
# using SendGrid's Python Library
# https://github.com/sendgrid/sendgrid-python
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

SENDGRID_API_KEY   = "xxxxx" # ご自分の取得したAPI_KEYを入れてくだされ

message = Mail(
    from_email='[email protected]', # メールの送信元
    to_emails='[email protected]', # メールの送信先
    subject='Sending with Twilio SendGrid is Fun', # タイトル
    html_content='<strong>and easy to do anywhere, even with Python</strong>') # メールの本文
try:
    # sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
    sg = SendGridAPIClient(SENDGRID_API_KEY)
    response = sg.send(message)
    print(response.status_code)
    print(response.body)
    print(response.headers)
except Exception as e:
    print(e.message)

ちなみにこれ、英語版の公式ドキュメントに載ってました。
英語にアレルギー反応がなければ、普通に見つけられるかと。

予想される検索ワード

以下、この記事を求めているであろう方が入力しそうな
(というか実際に私が必死で検索した)検索ワードです。

Python, SendGrid, SendGrid 6.8.0

実行環境

  • Windows10
  • Python 3.9.4
  • sendgrid 6.8.0

原因

既出の記事通りに上手くいかなかった原因ですが、
どうやらsendgridのverによって、記述方法が変わっているらしいです。
(verによって記述方法がどう変わるのかとか細かいとこまでは調べてないです)

似たようなパターンでハマったという記事もあったので
ご参考にしてください。

sendgridについては記事によって記載方法が異なっているので
わりと混乱しがちですね。
基本的にはキチンと公式ドキュメントを確認する方が良さそうです。

おわりに

プログラミングに関わると、verに苦しめられることは多々あるのですが、
ここまで記述がころころ変わるのも珍しい気がします。
やっぱり公式ドキュメント(というか英語)とはちゃんと向き合わないとですね...