Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Отправка писем с вложением с помощью библиотек smtplib и email
Продолжим тему использование электронной почты в программах на языке Python. В прошлой статье была приведена простейшая программа отсылающая текстовой письмо. Если вам не нужно отсылать файлы, то этого вполне достаточно. Но если нужны вложения, технологию создания письма нужно слегка изменить. Не слишком сильно, а главное всё довольно понятно.
Для усовершенствования технологии нам понадобится стандартная библиотека email. Подключение её тоже стандартно
import email
Для начала мы перепишем программу из прошлой статьи. Программа представлена ниже.
Пояснение к программе из рисунка 1
- Суть подхода заключается в том, что сообщение мы создаём уже не как строку, а с помощью метода email.message.EmailMessage(). И это уже не строка, а объект.
- Как мы видим, что объект msg обладает также свойствами словаря и мы можем определить поля email-сообщения: Subject, From, To. Здесь всё просто.
- Текстовое содержимое письма msg определяем с помощью метода set_content(txt).
- Ну а далее всё также, как в программе из предыдущей статьи. Соединяемся с почтовым сервером и отправляем через него письмо.
- Заметим также, что при отсылке мы преобразуем сообщение в строку: msg.as_string().
Как видим технология чрезвычайно проста. Но она позволяет далее посылать письма с вложениями. Т.е. в принципе можно создать вполне себе полноценного почтового клиента.
Ниже представлена программа, которая посылает письмо и с текстом и с вложением.
Пояснение к программе из рисунка 2
Как видим из программу, файл нужно просто открыть прочитать обычным способом как двоичный объект, а потом добавить с помощью метода add_attachment(), указав тип файла и его имя. При чём можно добавлять несколько файлов, ну сколько вам нужно, тем же методом.
И так, использование объекта, созданного с помощью модуля email.message, даёт значительные преимущества, в том случае, если есть вложения.
Ну пока всё! Но тему почты продолжим.
Следующая по теме статья здесь
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.