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:
- 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.
- Nejprve vytvořte instanci MIMEMultipart, konkrétně „msg“.
- 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.
- 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.
- 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). - 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.