Nikovit <Путешествия и разработка>

Отправляем email из скрипта Python

email.jpg

Иногда при возникновении ошибки в работе скрипта Python нам нужно отправить сообщение на почту, ниже я приведу пример скрипта которым сам пользуюсь.

Отправлять письмо из Python будем с яндекс почты.
Импортируем стандартную библиотеку python для отправки сообщения
import smtplib

Напишем функцию отправки:
def send_notification(email, txt):
Где: emal - адрес получателя, а txt - текст сообщения

Логин и пароль учетной записи с которой будем отправлять сообщение:
sender = 'test@yandex.ru'
sender_password = 'password'

Соединяемся с сервером по 465 порту и проходим авторизацию.
mail_lib = smtplib.SMTP_SSL('smtp.yandex.ru', 465)
mail_lib.login(sender, sender_password)

Создаем цикл отправки, т.к. у нас могут быть несколько адресатов.
for to_item in email:

Формируем заголовок сообщения:
msg = 'From: %s\r\nTo: %s\r\nContent-Type: text/plain; charset="utf-8"\r\nSubject: %s\r\n\r\n' % (
sender, to_item, 'Тема сообщения')
Объединяем заголовок и текст сообщения из параметра функции:
msg += txt

Отправляем сообщения закодировав его в UTF-8
mail_lib.sendmail(sender, to_item, msg.encode('utf8'))

Разрываем соединение с сервером:
mail_lib.quit()

В итоговом виде функция выглядит так:
import smtplib

def send_notification(email, txt):
    sender = 'test@yandex.ru'
    sender_password = 'password'
    mail_lib = smtplib.SMTP_SSL('smtp.yandex.ru', 465)
    mail_lib.login(sender, sender_password)
    for to_item in email:
        msg = 'From: %s\r\nTo: %s\r\nContent-Type: text/plain; charset="utf-8"\r\nSubject: %s\r\n\r\n' % (
        sender, to_item, 'Тема сообщения')
        msg += txt
        mail_lib.sendmail(sender, to_item, msg.encode('utf8'))
    mail_lib.quit()