python email gmail seznam email smtp
Email se stal standardem pro naši komunikaci. Používání emailu se nevyhnete ani v zaměstnání, ani v osobním životě. Pokud chcete tuto nudou činnost automatizovat, je Python tím správným jazykem, který vám pomůže.
Automatizujte emaily s Pythonem
V tomto článku se naučíte, jak odesílat e-maily pomocí jazyka Python.
Automatizace emailů má v praxi široké uplatnění. Můžete zasílat upozornění, když zákazník neuhradil včas platbu. Nebo potřebujete pravidelně posílat potvrzení novým uživatelům vaší aplikace. Anebo chcete upozornit odběratele na nový článek na vašem webu. Příkladů užití je spousta.
Ruční odesílání e-mailů je časově náročná práce, která je náchylná k chybám. Naštěstí jí díky Pythonu můžete snadno automatizovat.
Jak začít? Jednoduše!
Možností, jak využít Python pro automatizaci emailů je spoustu.
V tomto článku se naučíte ten nejjednodušší způsob. Zaměříme se na dvě, v ČR asi nejpoužívanější, freemailové služby - a sice Email od Seznamu a Gmail od Googlu.
Protože Python už obsahuje základní knihovnu pro posílání emailů, nemusíte nic složitě instalovat. Stačí, mít na svém počítači Python.
Pokud Python na svém PC ještě nemáte, bude se vám hodit návod jak snadno nainstalovat Python za 5 minut.
Seznam (email.cz)
V případě seznamu je nastavení jednoduché. Bude vám stačit jen emailová adresa a heslo. Zkopírujte níže uvedený kód a změňte username
a password
.
Pro vyzkoušení pošlete email sami sobě (proměnná recipient
).
from email.mime.text import MIMEText
import smtplib
import sys
username = 'mujosobniemail@seznam.cz'
password = 'sloziteheslo'
# Aby email fungoval hezky česky
message = MIMEText('Dokonalá automatizace v praxi. Nechávám Python, aby za mě posílal email. Jak lovely! :)')
message['Subject'] = 'Python za mě posílá email' # Předmět
message['From'] = username # Od koho
recipient = username # Komu
# Vytvoříme SMTP objekt se šifrováním pomocí SSL
with smtplib.SMTP_SSL('smtp.seznam.cz', 465) as smtp:
print('Přihlašuji se...')
try:
smtp.login(username, password)
except Exception as e:
print('Přihlášení se nepovedlo.', e)
sys.exit()
print('Odesílám email...')
try:
smtp.sendmail(username, recipient, message.as_string())
except Exception as e:
print('Odeslání se nepovedlo.', e)
sys.exit()
print('OK')
Přihlašuji se...
Odesílám email...
OK
Google (gmail)
Google sice zatím také povoluje použití emailu a hesla, ale nejdřív musíte tuto podporu zapnout v nastavení vašeho Google účtu. Protože Google tuto variantu nepovažuje za bezpečnou, plánuje jí na konci května 2022 zrušit.
Vy proto raději používejte doporučený způsob, který využívá dvoufázové ověření (Two-Factor Authentication nebo také 2FA). To si musíte zapnout (pokud ještě nemáte) v nastavení vašeho Google účtu. A navíc si ještě musíte vygenerovat jednorázové heslo pro vaši aplikaci.
Toto vygenerované heslo pak použijete v Python scriptu místo vašeho běžného hesla, kterým se přihlašujete na Google.
from email.mime.text import MIMEText
import smtplib
import sys
username = 'mujosobniemail@gmail.com'
password = 'aaaabbbbccccdddd' # Heslo pro aplikaci
# Aby email fungoval hezky česky
message = MIMEText('Dokonalá automatizace v praxi. Nechávám Python, aby za mě posílal email. Jak lovely! :)')
message['Subject'] = 'Python za mě posílá email' # Předmět
message['From'] = username # Od koho
recipient = username # Komu
# Vytvoříme SMTP objekt se šifrováním pomocí TLS
with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
smtp.starttls() # Spustíme šifrované připojení
print('Přihlašuji se...')
try:
smtp.login(username, password)
except Exception as e:
print('Přihlášení se nepovedlo.', e)
sys.exit()
try:
smtp.sendmail(username, recipient, message.as_string())
except Exception as e:
print('Odeslání se nepovedlo.', e)
sys.exit()
print('OK')
Přihlašuji se...
Odesílám email...
OK
Závěrem
Nyní umíte posílat emaily pomocí pár řádek Python kódu! Jen pamatujte: žádný spam. ;)
Pokud přemýšlíte, jak využít Python, možná vás bude zajímat online kurz základů Pythonu. Ten je určen pro všechny, kteří chtějí získat pevné základy Pythonu a používat ho třeba pro datovou analýzu.