Отправка почты в Python с помощью sendmail

  • Опубликовано:
По просьбам телезрителей, как обещал, напишу как отправить электронную почту на Python через sendmail.

В простейшем случае нам понадобятся две вещи:
  • класс MIMEText из библиотеки email для конструирования сообщения
  • модуль subprocess для направления нашего сообщения на sendmail

Для наглядности открываем Python в командной строке:

Python 2.7.3 (default, Sep 26 2013, 20:08:41)
[GCC 4.6.3] on linux2
>>> from email.mime.text import MIMEText
>>> msg = MIMEText("Это само сообщение.")
>>> msg["From"] = "from@example.com"
>>> msg["To"] = "to@example.com"
>>> msg["Subject"] = "Тема письма"
>>> from subprocess import Popen, PIPE
>>> p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE)
>>> p.communicate(msg.as_string())
(None, None)
С вероятностью чуть более 99% такое письмо придет в спам, поэтому ищем его там.

Эту статью собирался написать почти года два назад (сейчас февраль 2014), но с тех пор понял - лучше и проще отправлять почту через smtp.

sendmail обычно используют на shared хостингах на дешевых тарифах. Но если вам доступен Python, то скорее всего и smtp тоже.