Flaskで問い合わせフォーム作成&メールで通知する方法

備忘録

お問い合わせフォームのデータをサーバー側のスクリプト(Python)で受け取り、その内容を自分のメールアドレス(Gmail)宛に送信する方法を、自分用に備忘録としてまとめました。

必要なライブラリのインストール
メール送信にはFlask-Mailを使用しました。 以下のコマンドでインストールします。

Flask アプリの設定

  1. Flask-Mailの設定
    Flask アプリでメール送信機能を設定するために、以下のようにします。

 Gmailを使用する場合の各種設定

  • MAIL_SERVER: http://smtp.gmail.com/
  • MAIL_PASSWORD:
    ① Googleアカウントにログインします。
    ② 「セキュリティ」セクションを開きます。
    ③ 「アプリパスワード」を見つけます。 ※このオプションを利用するためには、2段階認証を有効にしている必要があります。
    ④ 「アプリパスワードの生成」を選び、アプリケーションとして「メール」を選択し、デバイスとして「その他」を選び、カスタム名を入力します。 表示されるパスワードを安全に保存し、MAIL_PASSWORDとして使用します。
  • SECRET_KEY:
    Pythonのos.urandom()関数を使用して、ランダムなキーを生成することにしました。

  この生成された値をSECRET_KEYとして設定します。

2. お問い合わせフォームのデータを受け取り、メールで送信

3. ローカル環境でのテスト

ターミナルで以下のコマンドを実行して、ローカルで簡易メールサーバーを起動します。

これにより、localhostの1025ポートでメールサーバーが起動します。
次に、Flaskアプリケーションの設定で、メール送信用の設定をこのサーバーに向けて変更します。

この設定で、送信されたメールはコマンドラインに出力されますが、実際にはインターネットを介して送信されません。

テスト

Flaskアプリケーションを実行し、お問い合わせフォームからデータを送信してみます。
送信が成功すれば、起動しているSMTPデバッグサーバーのコンソールに送信されたメールの内容が表示されるはずです。

4. 本番用の設定にする

ローカル環境でのテスト用に変更した部分を本番用に設定し直してください。

おわり