Отправляем email из скрипта Python
0
22.08.201909:0522.08.2019 09:05:43
Иногда при возникновении ошибки в работе скрипта Python нам нужно отправить сообщение на почту, ниже я приведу пример скрипта которым сам пользуюсь.
Отправлять письмо из Python будем с яндекс почты.[spoiler]
Импортируем стандартную библиотеку python для отправки сообщения
Напишем функцию отправки:
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)
|
Создаем цикл отправки, т.к. у нас могут быть несколько адресатов.
Формируем заголовок сообщения:
msg = 'From: %s\r\nTo: %s\r\nContent-Type: text/plain; charset="utf-8"\r\nSubject: %s\r\n\r\n' % (
sender, to_item, 'Тема сообщения')
|
Объединяем заголовок и текст сообщения из параметра функции:
Отправляем сообщения закодировав его в UTF-8
mail_lib.sendmail(sender, to_item, msg.encode('utf8'))
|
Разрываем соединение с сервером:
В итоговом виде функция выглядит так:
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()
|
22.08.201909:0522.08.2019 09:05:43
И че делать?
Почему-то цикл не считывает корректно email из аргумента, обрезает по точке, но если отправлять на 1 мейл и без цикла, то всё работает.
Можно добавить ещё, что аутентификация влоб не работает, нужно в настройках ящика создать пароль для приложений и его использовать.