Articles

GeeksforGeeks

In het vorige artikel hebben we de basisprincipes besproken van het versturen van een mail vanuit een Gmail account zonder onderwerp en ook zonder bijlage. Vandaag zullen we leren hoe we mail met bijlage en onderwerp kunnen versturen met Python. Alvorens verder te gaan, is het sterk aanbevolen om te leren hoe je een eenvoudige e-mail met behulp van Python te sturen en leren de basis werking van ‘smtplib’ bibliotheek van Python.
Als je hebt gelezen het vorige artikel, heb je de kennis opgedaan hoe een sessie wordt gemaakt en hoe het werkt. Nu moet je leren om een bestand en onderwerp bij de mail te voegen. Daarvoor moet u een aantal native bibliotheken van Python importeren. Uit deze bibliotheken moet u de hulpmiddelen importeren die in onze programma’s worden gebruikt.

stappen om e-mail met bijlagen van Gmail-account te verzenden:

  1. Om een bijlage toe te voegen, moet u importeren:
    • import smtplib
    • from email.mime.multipart import MIMEMultipart
    • from email.mime.text import MIMEText
    • from email.mime.base import MIMEBase
    • from email import encoders

    Dit zijn enkele bibliotheken die ons werk eenvoudig zullen maken. Dit zijn de native libraries en je hoeft hiervoor geen externe library te importeren.

  2. Maak allereerst een instantie van MIMEMultipart, namelijk “msg” om mee te beginnen.
  3. Vermeld de afzender’s email id, ontvanger’s email id en het onderwerp in de “From”, “To” en “Subject” sleutel van de aangemaakte instantie “msg”.
  4. In een string, schrijf de body van het bericht dat je wilt versturen, namelijk body. Koppel nu de body aan de instantie msg met de functie attach.
  5. Open het bestand dat je wilt bijvoegen in de “rb” mode. Maak dan een instantie van MIMEBase met twee parameters. De eerste is ‘_maintype’ en de andere is ‘_subtype’. Dit is de basisklasse voor alle MIME-specifieke subklassen van Message.
    Merk op dat ‘_maintype’ het hoofdtype Content-Type is (b.v. tekst of afbeelding), en ‘_subtype’ het subtype Content-Type minor (b.v. plain of gif of andere media).
  6. set_payload wordt gebruikt om de payload in de gecodeerde vorm te veranderen. Encodeer het in encode_base64. En voeg tenslotte het bestand toe met de MIMEMultipart gemaakte instantie msg.

Na het voltooien van deze stappen, volg de instructies beschreven in het vorige artikel om een sessie te maken, deze te beveiligen en de authenticiteit te controleren en dan na het versturen van de mail, de sessie te beeindigen.

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



Belangrijke punten:

  • U kunt lussen gebruiken om mails naar een aantal mensen te sturen.
  • Deze code is eenvoudig te implementeren. Maar het zal niet werken als u 2-staps verificatie op uw gmail-account hebt ingeschakeld. Het is vereist om uit te schakelen de 2-staps verificatie first.
  • Met behulp van deze methode, zal Gmail altijd zet uw e-mail in de primaire sectie en de mails verzonden zal niet Spam.

Dit artikel is bijgedragen door Rishabh Bansal. Als je GeeksforGeeks leuk vindt en een bijdrage wilt leveren, kun je ook een artikel schrijven via contribute.geeksforgeeks.org of mail je artikel naar [email protected] Zie je artikel verschijnen op de GeeksforGeeks hoofdpagina en help andere Geeks.

Laat een antwoord achter

Het e-mailadres wordt niet gepubliceerd.