Envíe un correo con un archivo adjunto desde su cuenta de Gmail usando Python

En el último artículo, hemos discutido los conceptos básicos de enviar un correo desde una cuenta de Gmail sin ningún asunto y sin ningún archivo adjunto . Hoy aprenderemos a enviar correos electrónicos con un archivo adjunto y un asunto usando Python. Antes de continuar, se recomienda encarecidamente aprender a enviar un correo electrónico simple usando Python y aprender los conceptos básicos de funcionamiento de la biblioteca ‘smtplib’ de Python.
Si ha leído el artículo anterior, ha adquirido el conocimiento de cómo se crea una sesión y cómo funciona. Ahora, debe aprender a adjuntar un archivo y sujeto al correo. Para eso necesitas importar algunas bibliotecas nativas de Python. Desde estas bibliotecas, debe importar las herramientas utilizadas en nuestros programas.

Pasos para enviar correo con archivos adjuntos desde la cuenta de Gmail:

  1. Para agregar un archivo adjunto, debe importar:
    • importar smtplib
    • desde email.mime.multipart importar MIMEMultipart
    • desde email.mime.text importar MIMEText
    • desde email.mime.base importar MIMEBase
    • desde codificadores de importación de correo electrónico

    Estas son algunas bibliotecas que simplificarán nuestro trabajo. Estas son las bibliotecas nativas y no necesita importar ninguna biblioteca externa para esto.

  2. En primer lugar, cree una instancia de MIMEMultipart, a saber, «msg» para empezar.
  3. Mencione la identificación del correo electrónico del remitente, la identificación del correo electrónico del destinatario y el asunto en las teclas «De», «Para» y «Asunto» de la instancia creada «mensaje».
  4. En una string, escriba el cuerpo del mensaje que desea enviar, es decir, el cuerpo. Ahora, adjunte el cuerpo con el mensaje de instancia usando la función de adjuntar.
  5. Abra el archivo que desea adjuntar en el modo «rb». Luego cree una instancia de MIMEBase con dos parámetros. El primero es ‘_maintype’ y el otro es ‘_subtype’. Esta es la clase base para todas las subclases de Message específicas de MIME.
    Tenga en cuenta que ‘_maintype’ es el tipo principal de Content-Type (p. ej., texto o imagen) y ‘_subtype’ es el tipo secundario de Content-Type (p. ej., normal o gif u otros medios).
  6. set_payload se utiliza para cambiar la carga útil del formulario codificado. Codifíquelo en encode_base64. Y finalmente adjunte el archivo con el mensaje de instancia MIMEMultipart creado.

Después de terminar estos pasos, siga las instrucciones descritas en el artículo anterior para crear una sesión, asegurarla y verificar la autenticidad y luego de enviar el correo, finalice la sesión.

# Python code to illustrate Sending mail with attachments
# from your Gmail account 
  
# libraries to be imported
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"
   
# instance of MIMEMultipart
msg = MIMEMultipart()
  
# storing the senders email address  
msg['From'] = fromaddr
  
# storing the receivers email address 
msg['To'] = toaddr
  
# storing the subject 
msg['Subject'] = "Subject of the Mail"
  
# string to store the body of the mail
body = "Body_of_the_mail"
  
# attach the body with the msg instance
msg.attach(MIMEText(body, 'plain'))
  
# open the file to be sent 
filename = "File_name_with_extension"
attachment = open("Path of the file", "rb")
  
# instance of MIMEBase and named as p
p = MIMEBase('application', 'octet-stream')
  
# To change the payload into encoded form
p.set_payload((attachment).read())
  
# encode into base64
encoders.encode_base64(p)
   
p.add_header('Content-Disposition', "attachment; filename= %s" % filename)
  
# attach the instance 'p' to instance 'msg'
msg.attach(p)
  
# creates SMTP session
s = smtplib.SMTP('smtp.gmail.com', 587)
  
# start TLS for security
s.starttls()
  
# Authentication
s.login(fromaddr, "Password_of_the_sender")
  
# Converts the Multipart msg into a string
text = msg.as_string()
  
# sending the mail
s.sendmail(fromaddr, toaddr, text)
  
# terminating the session
s.quit()


Puntos importantes:

  • Puede usar bucles para enviar correos a varias personas.
  • Este código es simple de implementar. Pero no funcionará si ha habilitado la verificación en dos pasos en su cuenta de Gmail. Es necesario desactivar primero la verificación en dos pasos.
  • Usando este método, Gmail siempre pondrá su correo en la sección principal y los correos enviados no serán Spam.

Este artículo es una contribución de Rishabh Bansal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *