Flask - Mail
Un'applicazione basata sul Web è spesso richiesta per avere una funzione di invio di posta agli utenti / client. Flask-Mail estensione rende molto facile configurare una semplice interfaccia con qualsiasi server di posta elettronica.
All'inizio, l'estensione Flask-Mail dovrebbe essere installata con l'aiuto dell'utility pip.
pip install Flask-Mail
Quindi Flask-Mail deve essere configurato impostando i valori dei seguenti parametri dell'applicazione.
Suor n | Parametri e descrizione |
---|---|
1 |
MAIL_SERVER Nome / indirizzo IP del server di posta elettronica |
2 |
MAIL_PORT Numero di porta del server utilizzato |
3 |
MAIL_USE_TLS Abilita / disabilita la crittografia Transport Security Layer |
4 |
MAIL_USE_SSL Abilita / disabilita la crittografia Secure Sockets Layer |
5 |
MAIL_DEBUG Supporto per il debug. L'impostazione predefinita è lo stato di debug dell'applicazione Flask |
6 |
MAIL_USERNAME Nome utente del mittente |
7 |
MAIL_PASSWORD password del mittente |
8 |
MAIL_DEFAULT_SENDER imposta il mittente predefinito |
9 |
MAIL_MAX_EMAILS Imposta il numero massimo di messaggi da inviare |
10 |
MAIL_SUPPRESS_SEND Invio soppresso se app.testing è impostato su true |
11 |
MAIL_ASCII_ATTACHMENTS Se impostato su true, i nomi dei file allegati vengono convertiti in ASCII |
Il modulo flask-mail contiene le definizioni delle seguenti importanti classi.
Classe di posta
Gestisce i requisiti di messaggistica e-mail. Il costruttore della classe assume la seguente forma:
flask-mail.Mail(app = None)
Il costruttore accetta l'oggetto dell'applicazione Flask come parametro.
Metodi di classe Mail
Suor n | Metodi e descrizione |
---|---|
1 |
send() Invia il contenuto dell'oggetto della classe Message |
2 |
connect() Apre la connessione con l'host di posta |
3 |
send_message() Invia oggetto messaggio |
Classe messaggio
Incapsula un messaggio di posta elettronica. Il costruttore della classe del messaggio ha diversi parametri:
flask-mail.Message(subject, recipients, body, html, sender, cc, bcc,
reply-to, date, charset, extra_headers, mail_options, rcpt_options)
Metodi di classe dei messaggi
attach()- aggiunge un allegato al messaggio. Questo metodo accetta i seguenti parametri:
filename - nome del file da allegare
content_type - Tipo di file MIME
data - dati di file grezzi
disposition - disposizione del contenuto, se presente.
add_recipient() - aggiunge 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.
Step 1 - Importa la classe Mail e Message dal modulo flask-mail nel codice.
from flask_mail import Mail, Message
Step 2 - Quindi Flask-Mail è configurato secondo le seguenti impostazioni.
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
Step 3 - Crea un'istanza della classe Mail.
mail = Mail(app)
Step 4 - Imposta un oggetto Message in una funzione Python mappata dalla regola URL (‘/’).
@app.route("/")
def index():
msg = Message('Hello', sender = '[email protected]', recipients = ['[email protected]'])
msg.body = "This is the email body"
mail.send(msg)
return "Sent"
Step 5- L'intero codice è riportato di seguito. Esegui il seguente script in Python Shell e visitahttp://localhost:5000/.
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 "Sent"
if __name__ == '__main__':
app.run(debug = True)
Tieni presente che le funzionalità di insicurezza integrate nel servizio Gmail potrebbero bloccare questo tentativo di accesso. Potrebbe essere necessario ridurre il livello di sicurezza. Accedi al tuo account Gmail e visita questo link per diminuire la sicurezza.