Articles

GeeksforGeeks

Dans le dernier article, nous avons abordé les bases de l’envoi d’un mail depuis un compte Gmail sans objet ainsi que sans pièce jointe. Aujourd’hui, nous allons apprendre à envoyer un mail avec pièce jointe et sujet en utilisant Python. Avant de poursuivre, il est fortement recommandé d’apprendre à envoyer un courrier simple en utilisant Python et d’apprendre les bases du fonctionnement de la bibliothèque ‘smtplib’ de Python.
Si vous avez lu l’article précédent, vous avez acquis la connaissance de la création d’une session et de son fonctionnement. Maintenant, vous devez apprendre à joindre un fichier et un sujet au courrier. Pour cela, vous devez importer certaines bibliothèques natives de Python. A partir de ces bibliothèques, vous devez importer les outils utilisés dans nos programmes.

Etapes pour envoyer un mail avec des pièces jointes à partir d’un compte Gmail:

  1. Pour ajouter une pièce jointe, vous devez importer:
    • import smtplib
    • f email.mime.multipart import MIMEMultipart
    • from email.mime.text import MIMEText
    • from email.mime.base import MIMEBase
    • from email import encoders

    Ce sont quelques bibliothèques qui vont rendre notre travail simple. Ce sont les bibliothèques natives et vous n’avez pas besoin d’importer une bibliothèque externe pour cela.

  2. Tout d’abord, créez une instance de MIMEMultipart, à savoir « msg » pour commencer.
  3. Mentionnez l’id de l’email de l’expéditeur, l’id de l’email du destinataire et le sujet dans la clé « From », « To » et « Subject » de l’instance créée « msg ».
  4. Dans une chaîne de caractères, écrivez le corps du message que vous voulez envoyer, à savoir body. Maintenant, attachez le corps avec l’instance msg en utilisant la fonction attach.
  5. Ouvrez le fichier que vous souhaitez attacher dans le mode « rb ». Ensuite, créez une instance de MIMEBase avec deux paramètres. Le premier est ‘_maintype’ et l’autre est ‘_subtype’. C’est la classe de base pour toutes les sous-classes de Message spécifiques à MIME.
    Notez que ‘_maintype’ est le type majeur Content-Type (par exemple texte ou image), et ‘_subtype’ est le type mineur Content-Type (par exemple plain ou gif ou autre média).
  6. set_payload est utilisé pour changer le payload la forme encodée. Encodez-le dans encode_base64. Et enfin joindre le fichier avec le msg d’instance MIMEMultipart créé.

Après avoir terminé ces étapes, suivez les instructions décrites dans l’article précédent pour créer une session, la sécuriser et vérifier l’authenticité, puis après avoir envoyé le courrier, terminer la session.

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()



Points importants :

  • Vous pouvez utiliser des boucles pour envoyer des mails à un certain nombre de personnes.
  • Ce code est simple à mettre en œuvre. Mais il ne fonctionnera pas si vous avez activé la vérification en 2 étapes sur votre compte gmail. Il est nécessaire de désactiver la vérification en 2 étapes d’abord.
  • En utilisant cette méthode, Gmail mettra toujours votre courrier dans la section primaire et les mails envoyés ne seront pas des Spam.

Cet article est contribué par Rishabh Bansal. Si vous aimez GeeksforGeeks et que vous souhaitez contribuer, vous pouvez également écrire un article en utilisant contribute.geeksforgeeks.org ou envoyer votre article par courrier à [email protected] Voyez votre article apparaître sur la page principale de GeeksforGeeks et aidez d’autres Geeks.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.