Articles

GeeksforGeeks

Nell’ultimo articolo, abbiamo discusso le basi dell’invio di una mail da un account Gmail senza alcun oggetto e senza alcun allegato. Oggi, impareremo come inviare una mail con allegato e oggetto usando Python. Prima di andare avanti, è altamente raccomandato imparare come inviare una semplice mail usando Python e imparare le basi del funzionamento della libreria ‘smtplib’ di Python.
Se hai letto l’articolo precedente, hai acquisito la conoscenza di come viene creata una sessione e come funziona. Ora, devi imparare ad allegare un file e un oggetto alla mail. Per questo è necessario importare alcune librerie native di Python. Da queste librerie, è necessario importare gli strumenti utilizzati nei nostri programmi.

Passi per inviare posta con allegati dall’account Gmail:

  1. Per aggiungere un allegato, è necessario importare:
    • import smtplib
    • da email.mime.multipart import MIMEMultipart
    • from email.mime.text import MIMEText
    • from email.mime.base import MIMEBase
    • from email import encoders

    Queste sono alcune librerie che rendono il nostro lavoro semplice. Queste sono le librerie native e non c’è bisogno di importare alcuna libreria esterna per questo.

  2. Innanzitutto, create un’istanza di MIMEMultipart, cioè “msg” per cominciare.
  3. Menzionate l’id del mittente, l’id del destinatario e l’oggetto nella chiave “From”, “To” e “Subject” dell’istanza creata “msg”.
  4. In una stringa, scrivete il corpo del messaggio che volete inviare, cioè body. Ora, collegate il corpo con l’istanza msg usando la funzione attach.
  5. Apri il file che vuoi allegare in modalità “rb”. Poi create un’istanza di MIMEBase con due parametri. Il primo è ‘_maintype’ e l’altro è ‘_subtype’. Questa è la classe base per tutte le sottoclassi MIME-specifiche di Message.
    Nota che ‘_maintype’ è il Content-Type major type (ad esempio testo o immagine), e ‘_subtype’ è il Content-Type minor type (ad esempio plain o gif o altri media).
  6. set_payload è usato per cambiare il payload nella forma codificata. Codifica in encode_base64. E infine allegare il file con il msg dell’istanza MIMEMultipart creata.

Dopo aver terminato questi passi, seguite le istruzioni descritte nell’articolo precedente per creare una sessione, metterla in sicurezza e controllarne l’autenticità e poi, dopo aver inviato la posta, terminare la sessione.

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
fromaddr = "EMAIL address of the sender"
toaddr = "EMAIL address of the receiver"
msg = MIMEMultipart()
msg = fromaddr
msg = toaddr
msg = "Subject of the Mail"
body = "Body_of_the_mail"
msg.attach(MIMEText(body, 'plain'))
filename = "File_name_with_extension"
attachment = open("Path of the file", "rb")
p = MIMEBase('application', 'octet-stream')
p.set_payload((attachment).read())
encoders.encode_base64(p)
p.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(p)
s = smtplib.SMTP('smtp.gmail.com', 587)
s.starttls()
s.login(fromaddr, "Password_of_the_sender")
text = msg.as_string()
s.sendmail(fromaddr, toaddr, text)
s.quit()



Punti importanti:

  • Puoi usare i loop per inviare mail a più persone.
  • Questo codice è semplice da implementare. Ma non funzionerà se avete abilitato la verifica in 2 passaggi sul vostro account gmail. E’ necessario disattivare prima la verifica in 2 passaggi.
  • Utilizzando questo metodo, Gmail metterà sempre la tua posta nella sezione primaria e i messaggi inviati non saranno Spam.

Questo articolo è stato contribuito da Rishabh Bansal. Se ti piace GeeksforGeeks e vuoi contribuire, puoi anche scrivere un articolo usando contribute.geeksforgeeks.org o inviare il tuo articolo a [email protected] Vedi il tuo articolo apparire sulla pagina principale di GeeksforGeeks e aiuta altri Geek.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato.