Invio di email in Python con SMTP

Questo tutorial fornirà un'introduzione a SMTP, un modulo Python utilizzato per l'invio di posta. Mostrerà anche come inviare diversi tipi di email come semplici e-mail di testo, e-mail con allegati ed e-mail con contenuto HTML.

Introduzione a SMTP

Il protocollo SMTP (Simple Mail Transfer Protocol) gestisce l'invio e il routing della posta tra i server di posta.

In Python, il smtplib modulo definisce un oggetto sessione client SMTP che può essere utilizzato per inviare posta a qualsiasi macchina Internet con un daemon listener SMTP o ESMTP.

Ecco come creare un oggetto SMTP.

import smtplib server = smtplib.SMTP (host = 'host_address', porta = tua_port)

Crea e invia una semplice email

Il seguente script ti consentirà di inviare un'email tramite il server SMTP di Gmail. Tuttavia, Google non consentirà l'accesso tramite smtplib perché ha contrassegnato questo tipo di accesso come "meno sicuro". Per risolvere questo problema, vai su https://www.google.com/settings/security/lesssecureapps mentre hai eseguito l'accesso al tuo account Google e "Consenti app meno sicure". Vedi la schermata qui sotto.

Seguiremo i seguenti passi per realizzare questo processo:

  • Creare un oggetto SMTP per la connessione al server.
  • Accedi al tuo account.
  • Definire le intestazioni dei messaggi e le credenziali di accesso.
  • Creare un MimeMultipart oggetto messaggio e allegare le intestazioni pertinenti ad esso, ad esempio Da, A e Oggetto.
  • Allega il messaggio al messaggio MimeMultipart oggetto.
  • Infine, invia il messaggio.

Questo processo è semplice come mostrato di seguito.

# import pacchetti necessari da email.mime.multipart import MIMEMultipart da email.mime.text import MIMEText import smtplib # create message object instance msg = MIMEMultipart () message = "Grazie" # setup i parametri del messaggio password = "your_password" msg ['From'] = "your_address" msg ['To'] = "to_address" msg ['Subject'] = "Subscription" # aggiungi nel corpo del messaggio msg.attach (MIMEText (message, 'plain')) # create server server = smtplib.SMTP ('smtp.gmail.com: 587') server.starttls () # Credenziali di accesso per l'invio della mail server.login (msg ['From'], password) # invia il messaggio tramite il server . server.sendmail (msg ['From'], msg ['To'], msg.as_string ()) server.quit () stampa "email inviata con successo a% s:"% (msg ['To']) 

Si noti che gli indirizzi "A" e "Da" devono essere inclusi esplicitamente nelle intestazioni dei messaggi.

Crea e invia un'e-mail con un allegato

In questo esempio, invieremo un'email con un allegato immagine. Il processo è simile all'invio di un'e-mail in testo semplice.

  • Creare un oggetto SMTP per la connessione al server.
  • Accedi al tuo account.
  • Definire le intestazioni dei messaggi e le credenziali di accesso.
  • Creare un MimeMultipart oggetto messaggio e allegare le intestazioni pertinenti ad esso, ad esempio Da, A e Oggetto.
  • Leggi e allega l'immagine al messaggio MimeMultipart oggetto.
  • Infine, invia il messaggio.
# send_attachment.py # importa i pacchetti necessari da email.mime.multipart importa MIMEMultipart da email.MIMEImage importa MIMEImage da email.mime.text import MIMEText importa smtplib # crea l'istanza dell'oggetto messaggio msg = MIMEMultipart () # imposta i parametri della password del messaggio = "your_password" msg ['From'] = "your_address" msg ['To'] = "to_address" msg ['Subject'] = "Photos" # collega immagine al corpo del messaggio msg.attach (MIMEImage (file ("google .jpg "). read ())) # crea server server = smtplib.SMTP ('smtp.gmail.com: 587') server.starttls () # Credenziali di accesso per l'invio della mail server.login (msg ['From' ], password) # invia il messaggio tramite il server. server.sendmail (msg ['From'], msg ['To'], msg.as_string ()) server.quit () stampa "email inviata con successo a% s:"% (msg ['To']) 

Il MIMEImage la classe è una sottoclasse di MIMENonMultipart che viene utilizzato per creare oggetti messaggio MIME di tipi di immagine.Altre classi disponibili includono
MIMEMessage e MIMEAudio.

Crea e invia email HTML

La prima cosa che faremo è creare un modello di email HTML.

Crea un modello HTML

Ecco il codice HTML per il modello e contiene due colonne di tabella ciascuna con un'immagine e contenuto di anteprima. Se preferisci una soluzione professionale e pronta, prendi i nostri migliori modelli di email. Abbiamo una serie di opzioni reattive con funzionalità facili da personalizzare per iniziare.

  Newsletter per e-mail Tutsplus    

Visualizza nel browser

Evanto limitato

Novembre 2017

Come alzarsi e correre con Vue

Nel post introduttivo di questa serie abbiamo parlato un po 'di come i web designer possono trarre vantaggio dall'utilizzo di Vue. In questo tutorial impareremo come ottenere Vue up ...

Presentazione di Haiku: Design and Create Motion

Con il movimento in aumento tra gli sviluppatori web così anche gli strumenti che aiutano a semplificare la sua creazione. Haiku è un stand-alone ...

Progetta esperienze migliori per web e mobile

Annulla iscrizione Tweet | Visualizza nel browser

Alla fine, il modello apparirà come questo:

Di seguito è riportato lo script per l'invio di un'e-mail con contenuto HTML. Il contenuto del modello sarà il nostro messaggio di posta elettronica.

import smtplib import email.message server = smtplib.SMTP ('smtp.gmail.com:587') email_content = "" "    Newsletter per e-mail Tutsplus    

Visualizza nel browser

Evanto limitato

Novembre 2017

Come alzarsi e correre con Vue

Nel post introduttivo di questa serie abbiamo parlato un po 'di come i web designer possono trarre vantaggio dall'utilizzo di Vue. In questo tutorial impareremo come ottenere Vue up ...

Presentazione di Haiku: Design and Create Motion

Con il movimento in aumento tra gli sviluppatori web così anche gli strumenti che aiutano a semplificare la sua creazione. Haiku è un stand-alone ...

Progetta esperienze migliori per web e mobile

Annulla iscrizione Tweet | Visualizza nel browser

"" "msg = email.message.Message () msg ​​['Subject'] = 'Tutsplus Newsletter' msg ['From'] = 'youraddress' msg ['To'] = 'to_address' password =" yourpassword "msg. add_header ('Content-Type', 'text / html') msg.set_payload (email_content) s = smtplib.SMTP ('smtp.gmail.com: 587') s.starttls () # Credenziali di accesso per l'invio della posta. login (msg ['From'], password) s.sendmail (msg ['From'], [msg ['To']], msg.as_string ())

Esegui il tuo codice e, se non si verifica alcun errore, l'email è andata a buon fine. Ora vai nella tua posta in arrivo e dovresti vedere la tua email come contenuto HTML ben formattato.

Conclusione

Questo tutorial ha coperto la maggior parte di ciò che è necessario per inviare e-mail per la tua applicazione. Sono disponibili diverse API per l'invio di e-mail, quindi non è necessario iniziare da zero, ad es. SendGrid, ma è anche importante capire le basi. Per ulteriori informazioni, visita i documenti Python.

Inoltre, non esitare a vedere ciò che abbiamo a disposizione per la vendita e per studiare nel mercato Envato, e per favore fai tutte le domande e fornisci il tuo prezioso feedback usando il feed qui sotto.