From baae729ad4fffb234ebf04818fcf24879772f648 Mon Sep 17 00:00:00 2001 From: Magnus Root Date: Wed, 30 Jul 2025 15:43:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B5=D0=B7=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++++++ mail_sender.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 README.md create mode 100644 mail_sender.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..cdfc4c7 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Mail sender +## Скрипт для создания архива и отправки его по почте +Скрипт проверяет в папке `/test` наличие папки с сегодняшней датой в имени (задаётся в переменной `folder_path`). +Далее содержимое папки помещается в архив и отправляется почтой. +SMTP сервер без аутентификации задаётся в переменной `smtp_server`. +Список получателей задаётся в списке `recipients`. +Адрес отправителя устанавливается в строке `msg['From']` diff --git a/mail_sender.py b/mail_sender.py new file mode 100644 index 0000000..0146fde --- /dev/null +++ b/mail_sender.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +import os +import zipfile +import smtplib +from email.message import EmailMessage +from datetime import datetime +# Проверка наличия папки с текущей датой +today_date = datetime.today().strftime('%Y-%m-%d') +folder_path = f'/test/{today_date}' +if not os.path.exists(folder_path) or not os.path.isdir(folder_path): + print(f'Папка {folder_path} не существует.') + exit() +# Архивирование содержимого папки в zip +zip_filename = f'{folder_path}.zip' +with zipfile.ZipFile(zip_filename, 'w') as zipf: + for root, _, files in os.walk(folder_path): + for file in files: + file_path = os.path.join(root, file) + zipf.write(file_path, os.path.relpath(file_path, folder_path)) +print(f'Архив {zip_filename} успешно создан.') +# Отправка почты без авторизации +# Настройки SMTP сервера +smtp_server = 'Ваш SMTP-сервер' +smtp_port = 25 # Порт SMTP-сервера (обычно 25) +# Список получателей +recipients = ['Получатель 1', 'Получатель 2','Получатель 3'] +# Формирование письма +msg = EmailMessage() +msg['Subject'] = f'Название темы {today_date}' +msg['From'] = 'Адрес отправителя' +msg['To'] = ', '.join(recipients) +msg.set_content(f'Тело письма') +# Прикрепление архива к письму +with open(zip_filename, 'rb') as f: + msg.add_attachment(f.read(), maintype='application', subtype='zip', filename=os.path.basename(zip_filename)) +# Отправка письма +try: + with smtplib.SMTP(smtp_server, smtp_port) as server: + server.send_message(msg) + print('Письмо успешно отправлено.') +except Exception as e: + print(f'Ошибка отправки письма: {e}') +finally: + # Удаление временного архива + os.remove(zip_filename) + print(f'Архив {zip_filename} удален.') \ No newline at end of file