【Flask】SendGridでメール送信

WEB

こんにちは
クリエイターとっちです。

ここ数年、メール送信は、SendGridに頼りっぱなしです。

Laravel(PHP)での組み込みは、SendGrid PHPライブラリをcomposerでインストールして…
といった感じでできたのですが、Flask(Python)では、ライブラリがないっぽい(ものすごい古いのはありましたが…)ので、SMTPのような形式でapi情報を使用して組み込んでみました。

事前準備

flask-mail

docker-composeなどですと、requirements.txtに上記のように記載して起動します。
もちろん、直接、OS上で、pip install flask-mail を実行しても構いません。

あとは、SendGridで、APIキーを用意しておくことですね。

実装

MAIL_SERVER = 'smtp.sendgrid.net'
MAIL_PORT = 587
MAIL_USE_TLS = True
MAIL_USERNAME = 'apikey'
MAIL_PASSWORD = '※ここに、SendGrid管理画面で発行したAPIキーを設定'
MAIL_DEFAULT_SENDER = 'sample@creator-tocchi.net'

MAIL_USERNAMEは、apikeyという固定の文字列を全ユーザ共通で設定します。

from flask_mail import Mail

app = flask(__name__)

# 上記で設定したメール情報(config.py)の呼び込みを行っています。
app.config.from_pyfile('config.py')

mail = Mail()

def create_app():
    
    mail.init_app(app)
    ...

起動用のPythonファイルにて、flask_mailの初期生成を行っています。

from flask_mail import Message
from app import mail


msg = Message('件名が入ります', recipients='※送信先のメールアドレス')
msg.body = '本文が入ります'
mail.send(msg)

Mail送信を実行します。

このように簡単に実装することができました。

コメント

タイトルとURLをコピーしました