Отправка писем с вложением файла CSV с использованием smtplib на Python
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Руководства «Python»
Комментариев: 0

Я надеюсь, что у вас уже есть настроенный SMTP-сервер, если нет, вы можете использовать Gmail SMTP, Yahoo SMTP или Maligun или что-то подобное.

Отправка электронных писем с вложением CSV с использованием Python

from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.mime.text import MIMEText
import smtplib


def send_mail():
    # Создаем составное сообщение
    msg = MIMEMultipart()
    body_part = MIMEText(MESSAGE_BODY, 'plain')
    msg['Subject'] = EMAIL_SUBJECT
    msg['From'] = EMAIL_FROM
    msg['To'] = EMAIL_TO
    # Добавляем контент
    msg.attach(body_part)
    # Открываем и читаем CSV файл в двоичном формате
    with open(PATH_TO_CSV_FILE,'rb') as file:
    # Прикрепляем файл к письму
        msg.attach(MIMEApplication(file.read(), Name=FILE_NAME))

    # Создаем SMTP объект
    smtp_obj = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
    # Логинимся на SMTP сервере
    smtp_obj.login(SMTP_USERNAME, SMTP_PASSWORD)

    # Преобразуем сообщение в строку и отправим
    smtp_obj.sendmail(msg['From'], msg['To'], msg.as_string())
    smtp_obj.quit()

Переменные:

  • EMAIL_SUBJECT = Тема письма
  • EMAIL_FROM = адрес электронной почты получателя
  • EMAIL_TO = Адрес электронной почты отправителя
  • MESSAGE_BODY = тело письма
  • PATH_TO_CSV_FILE = путь к zip-файлу
  • FILE_NAME = имя файла для вложения электронной почты
  • SMTP_SERVER = SMTP-сервер
  • SMTP_PORT = порт SMTP
  • SMTP_USERNAME = имя пользователя для SMTP
  • SMTP_PASSWORD = пароль SMTP

Поскольку эти переменные содержат конфиденциальные данные, я всегда рекомендую передавать их из переменных среды, однако вы также можете передавать их в качестве аргументов функции send_mail.

Пояснения:

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

Затем мы открываем файл CSV в двоичном виде и присоединяем двоичный поток к электронному письму, используя метод MIMEApplication.

Затем мы используем встроенный модуль SMTP Python и создаем объект сеанса SMTP, предоставляя учетные данные для входа и, наконец, отправляя почту.

Обратите внимание, что если вы хотите отправить несколько CSV-файлов в одном и том же письме, вы можете создать список файлов, перебрать их и прикрепить к электронному письму, как показано ниже.

.....
# create file list
csv_files = ['path_to_csv_1','path_to_csv_2']
# loop over files
for file in csv_files:
    with open(file,'rb') as file:
    # Attach the file with filename to the email
        msg.attach(MIMEApplication(file.read(), Name=FILE_NAME))
.....
Теги записи: Python, Питон, EmailSending,
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)