English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Invio email Flask

Le applicazioni web basate su Web necessitano solitamente di una funzione per inviare email agli utenti/clienti. L'estensione Flask-Mail rende molto semplice configurare un'interfaccia per qualsiasi server di posta elettronica.

All'inizio, l'estensione Flask-Mail poteva essere installata utilizzando lo strumento pip, come mostrato di seguito -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Data: 2020-08-08
pip install Flask-Mail

Poi è necessario configurare Flask-Mail impostando i valori dei seguenti parametri dell'applicazione.

NumeroParametriDescrizione
1MAIL_SERVERNome/IP del server di posta
2MAIL_PORTPorta del server utilizzato
3MAIL_USE_TLSAbilitare/Disabilitare la crittografia TLS
4MAIL_USE_SSLAbilitare/Disabilitare la crittografia SSL
5MAIL_DEBUGSupporto di debug, predefinito è lo stato di debug dell'applicazione Flask
6MAIL_USERNAMENome utente del mittente
7MAIL_PASSWORDPassword del mittente
8MAIL_DEFAULT_SENDERImpostare l'indirizzo email predefinito del mittente
9MAIL_MAX_EMAILSImpostare il numero massimo di email da inviare
10MAIL_SUPPRESS_SENDSe app.testing è impostato su true, viene inviato il messaggio bloccato
11MAIL_ASCII_ATTACHMENTSSe impostato su true, il nome del file aggiuntivo viene convertito in ASCII

Il modulo flask-mail contiene le definizioni delle seguenti classi importanti.

Classe Mail

Gestisce le richieste di messaggi email. Il costruttore della classe utilizza la seguente forma -

NumeroMetodoDescrizione
1send()Invia il contenuto dell'oggetto Message
2connect()Apri una connessione con l'host di posta
3send_message()Invia l'oggetto del messaggio

Classe Message

Essa incapsula una email, il costruttore della classe Message ha diversi parametri -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Data: 2020-08-08
flask-mail.Message(subject, recipients, body, html, sender, cc, bcc, 
    reply-to, date, charset, extra_headers, mail_options, rcpt_options)

Metodi della classe Message

attach() - Aggiungi un allegato al messaggio. Questo metodo accetta i seguenti parametri - filename - Nome del file da allegare content_type - Tipo MIME del file data - Dati del file originale disposition - Gestione del contenuto, se presente.

add_recipient() - Aggiungi un altro destinatario al messaggio

Nell'esempio seguente, il server SMTP del servizio Gmail di Google viene utilizzato come MAIL_SERVER per la configurazione di Flask-Mail.

Passo 1 - Importa le classi Mail e Message dal modulo flask-mail nel codice.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Data: 2020-08-08
from flask_mail import Mail, Message

Passo 2 - Poi configura Flask-Mail secondo le seguenti impostazioni.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Data: 2020-08-08
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

Passo 3 - Crea un'istanza della classe Mail.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Data: 2020-08-08
mail = Mail(app)

Passo 4 - Imposta l'oggetto del messaggio in un funzione Python mappata dall'URL (‘/‘).

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Data: 2020-08-08
@app.route("/")
 def index():
     msg = Message('Hello', sender='[email protected]', recipients=['[email protected]'])
     msg.body = "Questo è il corpo dell'email"
     mail.send(msg)
     return "Inviato"

Passo 5 - Il codice completo è il seguente. Esegui lo script seguente nel Python Shell e accedi all'URL: http://localhost:5000/.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: it.oldtoolbag.com
# Data: 2020-08-08
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("/")
 def index():
     msg = Message('Hello', sender='[email protected]', recipients=['[email protected]'])
     msg.body = "Hello Flask message sent from Flask-Mail"
     mail.send(msg)
     return "Inviato"
 if __name__ == '__main__':
     app.run(debug=True)

Attenzione, le funzionalità non sicure integrate nel servizio Gmail potrebbero bloccare questo tentativo di login, potrebbe essere necessario ridurre il livello di sicurezza. Accedi al tuo account Gmail e visita  Questo linkaumentando la sicurezza.