Python - E-mail

Odesílání e-mailu

Odesílání e-mailů je velice jednoduché. Můžete se podívat na oficiální příklady pro Python 2.7 nebo Python 3.x.

Tyto příklady ukazují, jak poslat email přes SMTP nainstalovaný na vašem počítači (localhost):

import smtplib
from email.mime.text import MIMEText

msg = MIMEText("Dobry den!\nTelo emailu\nS pozdravem ...")

msg['Subject'] = 'Hlavicka emailu'
msg['From'] = 'odesilatel@example.com'
msg['To'] = 'prijemce@example.com'

# Odeslani emailu pres lokalni SMTP server
s = smtplib.SMTP('localhost')
# s.send_message(msg) # Takto jednoduse to jde od vezrze pythonu 3.2
s.sendmail(msg['From'], [msg['To']], msg)  # po staru
s.quit()

Tohle ale bude fungovat, jen pokud máte funkční lokální SMTP server. V OpenSuSE můžete použit YaST pro konfiguraci SMTP serveru, ale většinou instalace a nastavení SMTP serveru poměrně složité.

Následující příklad ukazuje, jak poslat email přes vzdálený server. Musíte si zjistit jen jméno serveru, přihlašovací jméno a heslo. (Stejné údaje, jaké potřebujete pro nastavení nějakého poštovního klienta, abyste mohli posílat email.)

Odeslání emailu pak vypadá nějak takto:

>>> import smtplib
>>> from email.mime.text import MIMEText
>>> msg = MIMEText("... telo emailu ...")
>>> msg['subject'] = 'Nejaky titulek'
>>> msg['from'] = 'odesilatel@example.com'
>>> msg['To'] = 'prijemce@example.com'
>>> s = smtplib.SMTP('smtp.centrum.cz', 587) #587 je port, muze byt 25 nebo tak neco
>>> s.login("vas email@centrum.cz",'vase heslo')
(235, 'Authentication succeeded')
>>> s.sendmail('vas email@centrum.cz',['prijemce@example.com'], msg.as_string())
{}
Komentář Hlášení chyby
Vytvořeno: 2.9.2015
Naposledy upraveno: 2.9.2015
Tato stánka používá ke svému běhu cookies, díky kterým je možné monitorovat, co tu provádíte (ne že bych to bez cookies nezvládl). Také vás tu bude špehovat google analytics. Jestli si myslíte, že je to problém, vypněte si cookies ve vašem prohlížeči, nebo odejděte a už se nevracejte :-). Prohlížením tohoto webu souhlasíte s používáním cookies. Dozvědět se více..