Articles

GeeksforGeeks

V minulém článku jsme probrali základy odeslání e-mailu z účtu Gmail bez předmětu i bez přílohy. Dnes se naučíme odesílat poštu s přílohou a předmětem pomocí jazyka Python. Než budeme pokračovat, doporučujeme naučit se odeslat jednoduchý mail pomocí Pythonu a seznámit se se základy fungování knihovny ‚smtplib‘ jazyka Python.
Pokud jste četli předchozí článek, získali jste znalosti o tom, jak se vytváří relace a jak funguje. Nyní se musíte naučit připojit k mailu soubor a předmět. K tomu potřebujete importovat některé nativní knihovny jazyka Python. Z těchto knihoven je třeba importovat nástroje používané v našich programech.

Kroky pro odeslání pošty s přílohami z účtu Gmail:

  1. Pro přidání přílohy je třeba importovat:
    • import smtplib
    • z emailu.mime.multipart import MIMEMultipart
    • from email.mime.text import MIMEText
    • from email.mime.base import MIMEBase
    • from email import encoders

    Tyto knihovny nám usnadní práci. Jedná se o nativní knihovny a nemusíte k tomu importovat žádnou externí knihovnu.

  2. Nejprve vytvořte instanci MIMEMultipart, konkrétně „msg“.
  3. V klíči „From“, „To“ a „Subject“ vytvořené instance „msg“ uveďte e-mailové ID odesílatele, e-mailové ID příjemce a předmět.
  4. Do řetězce napište tělo zprávy, kterou chcete odeslat, konkrétně body. Nyní připojte tělo k instanci msg pomocí funkce attach.
  5. Otevřete soubor, který chcete připojit, v režimu „rb“. Pak vytvořte instanci MIMEBase se dvěma parametry. První je ‚_maintype‘ a druhý ‚_subtype‘. Toto je základní třída pro všechny podtřídy Message specifické pro MIME.
    Všimněte si, že ‚_maintype‘ je hlavní typ Content-Type (např. text nebo obrázek) a ‚_subtype‘ je vedlejší typ Content-Type (např. plain nebo gif nebo jiné médium).
  6. set_payload slouží ke změně payloadu kódované podoby. Zakóduje se v encode_base64. A nakonec připojte soubor s vytvořenou instancí MIMEMultipart msg.

Po dokončení těchto kroků podle pokynů popsaných v předchozím článku vytvořte relaci, zabezpečte ji a zkontrolujte pravost a po odeslání pošty relaci ukončete.

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



Důležité body:

  • Pomocí smyček můžete posílat e-maily více lidem.
  • Tento kód je jednoduchý na implementaci. Nebude však fungovat, pokud máte na účtu gmail povoleno dvoufázové ověření. Je nutné nejprve vypnout dvoufázové ověření.
  • Při použití této metody Gmail vždy zařadí vaši poštu do primární sekce a odeslané e-maily nebudou patřit mezi spam.

Na tomto článku se podílel Rishabh Bansal. Pokud se vám GeeksforGeeks líbí a chtěli byste přispět, můžete také napsat článek pomocí stránky contribute.geeksforgeeks.org nebo poslat svůj článek na adresu [email protected] Uvidíte, jak se váš článek objeví na hlavní stránce GeeksforGeeks, a pomůžete tak ostatním geekům.

Leave a Reply

Vaše e-mailová adresa nebude zveřejněna.