Отправка вложений по email в Python: использование smtplib

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Модули Python smtplib и email.mime облегчают процесс прикрепления файлов в электронном письме. Воспользуйтесь образцом кода, позволяющего отправлять письма с приложенными файлами:

Python
Скопировать код
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

server_address = "smtp.yourprovider.com"
server_port = 587
login, password = "your_email", "your_password"

msg = MIMEMultipart()
msg['From'], msg['To'], msg['Subject'] = "your_email", "recipient_email", "Тема вашего письма"
msg.attach(MIMEText("Содержимое письма", 'plain'))

file_path = "path/to/your/file"
with open(file_path, "rb") as file:
    part = MIMEBase('application', 'octet-stream')
    part.set_payload(file.read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', f"attachment; filename={file_path}")

msg.attach(part)
with smtplib.SMTP(server_address, server_port) as server:
    server.starttls()
    server.login(login, password)
    server.send_message(msg)

Не забывайте корректировать данные в примере с учётом ваших особенностей, а также следите за тем, чтобы структура кода отвечала ващим потребностям.

Кинга Идем в IT: пошаговый план для смены профессии

Подготовка к полёту: Настройка и безопасность

Перед запуском убедитесь, что ваш аккаунт защищён и может быть использован для отправки сообщений в рамках сторонних приложений. Например, в случае Gmail необходимо активировать параметр, позволяющий доступ для приложений с меньшим уровнем безопасности или воспользоваться механизмом OAuth.

Крепкое рукопожатие: Аутентификация и подключение к серверу

Безопасное соединение с сервером обеспечивается протоколом TLS. Вызовите server.starttls() для шифрования сессии и server.login(login, password) для авторизации на сервере:

Python
Скопировать код
with smtplib.SMTP(server_address, server_port) as server:
    server.starttls()
    server.login(login, password)

Создание черновика: Написание письма

Заботливо подготовьте версии текстового и HTML письма, используя MIMEText, и прикрепите их к основному объекту MIMEMultipart, применяя для этого msg.attach().

Заряжаем колчан: Подготовка файлов к прикреплению

Чтение файлов должно осуществляться в бинарном режиме, чтобы обеспечить сохранность данных. Затем данные кодируются в base64 и прикрепляются к сообщению как объекты MIMEBase с заголовком Content-Disposition для вложений:

Python
Скопировать код
with open(file_path, "rb") as file:
    # ...последующая настройка MIMEBase

Выпускаем стрелу: Отправляем письмо

Для отправки электронного письма воспользуйтесь server.send_message(msg). Завершите сессию корректно, чтобы освободить системные ресурсы.

Визуализация

Можно представить процесс отправки приложений в виде работы почтового сервиса в мире Гарри Поттера, где каждый файл – это письмо, несомое совами.

Кулинария с вложениями: Обработка нескольких компонентов

Если письмо содержит множество вложений, добавьте их все, создав объект MIMEBase для каждого файла и прикрепив их к сообщению.

Правильное обращение к получателю: Форматирование адресата

В поле адреса можно использовать строку с адресами получателей, разделённых запятыми, или список адресов в случае массовой рассылки.

Python
Скопировать код
msg['To'] = ", ".join(recipient_list)  # Для нескольких получателей

Сохраняем магию в порядке: Структурирование вложений

Перенос создания MIME-объектов для вложений в отдельную функцию поможет сделать код более чистым и модульным.

Полезные материалы

  1. Официальная документация Python по работе с email.
  2. Урок по отправке писем через Gmail с использованием Python.
  3. Руководство Python по созданию MIME объектов.
  4. Видео-гайд для начинающих по отправке писем с приложенными файлами.
  5. Страница пакета email на Python Package Index.
  6. yagmail – инструмент для отправки электронных писем на Python.