Python 3 – PythonFlaskでEメールを送信する

Webベースのアプリケーションには、通常、ユーザー/クライアントにメールを送信する機能が必要です。 Flaskには、メールを送信するためのすぐに使用できるソリューションがありません。

代わりに、Flask-Mail拡張機能を使用すると、任意の電子メールサーバーとの単純なインターフェイスを簡単に確立できます。

電子メールは通常、メールの送信用(smtp)とメールの受信用(pop3)の2つのプロトコルを使用します。 この記事はメールの送信についてです。

関連コース: Python Flask:Flaskを使用してWebアプリを作成する

前書き

まず、pipユーティリティを使用してFlask-Mail拡張機能をインストールする必要があります。

次に、次のアプリケーションパラメータの値を設定して、Flask-Mailを設定する必要があります。

  • MAIL_SERVER
  • MAIL_USE_TLS
  • MAIL_USE_SSL
  • MAIL_DEBUG
  • MAIL_USERNAME
  • MAIL_PASSWORD
  • MAIL_DEFAULT_SENDER
  • MAIL_MAX_EMAILS
  • MAIL_SUPPRESS_SEND
  • MAIL_ASCII_ATTACHMENTS

フラスコメールモジュールには、次の重要なクラスの定義が含まれています。

Mailクラスは、電子メールメッセージングの要件を管理します。クラスコンストラクターは、次の形式を取ります。

1
flask-mail.Mail(app = None)

メールクラスのメソッドは次のとおりです。 send()connect() そして send_message()

Messageクラスは電子メールをカプセル化しました。Messageクラスコンストラクターにはいくつかのパラメーターがあります。

1
2
flask-mail.Message(subject, recipients, body, html, sender, cc, bcc, 
reply-to, date, charset, extra_headers, mail_options, rcpt_options)

メッセージクラスメソッドattach()-メールの添付ファイルを追加します。このメソッドは次のパラメータを取ります。

  • ファイル名:ファイルの名前
  • content_type:MIMEタイプ
  • データ-ファイルデータ

使用できます add_recipient() メッセージに別の受信者を追加します。

メールの設定と機能

以下の例では、Google gmailサービスのSMTPサーバーが、Flask-Mail構成のMAIL_SERVERとして使用されています。

ステップ1:コード内のflask-mailモジュールからMailクラスとMessageクラスをインポートします。

1
from flask_mail import Mail, Message

ステップ2:サーバーパラメーターを構成する

1
2
3
4
5
6
app.config['MAIL_SERVER']='smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = '[email protected]'
app.config['MAIL_PASSWORD'] = '*****'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True

手順3:Mailクラスのインスタンスを作成します。

ステップ4:メッセージオブジェクトは、URLルール(「/」)によってマップされるPython関数に設定されます。

1
2
3
4
5
6
@app.route("https://pythonbasics.org/")
def index():
msg = Message('Hello', sender = '[email protected]', recipients = ['[email protected]'])
msg.body = "This is the email body"
mail.send(msg)
return "Sent"

フラスコメールの例

コード全体は次のとおりです。Pythonシェルで次のスクリプトを実行し、アクセスします。 localhost:5000 /

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from flask import Flask
from flask_mail import Mail, Message

app = Flask(__name__)
mail= Mail(app)

app.config['MAIL_SERVER']='smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = '[email protected]'
app.config['MAIL_PASSWORD'] = '*****'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
mail = Mail(app)

@app.route("https://pythonbasics.org/")
def index():
msg = Message('Hello', sender = '[email protected]', recipients = ['[email protected]'])
msg.body = "Hello Flask message sent from Flask-Mail"
mail.send(msg)
return "Sent"

if __name__ == '__main__':
app.run(debug = True)

Gmailサービスのセキュリティにより、このログイン試行を防ぐことができることに注意してください。 Gmail SMTPサーバーを使用している場合は、セキュリティレベルを下げる必要があるかもしれません。

関連コース: Python Flask:Flaskを使用してWebアプリを作成する

Hope this helps!

Source link