Курс Python → Отправка поздравлений по дню рождения
Для автоматической отправки писем на день рождения с использованием Python необходимо создать проект, который будет использовать стандартные модули smtplib, EmailMessage и datetime. Дополнительно потребуются библиотеки pandas и openpyxl, которые можно установить с помощью pip. Эти библиотеки понадобятся для чтения данных из Excel файла, который содержит информацию о ваших друзьях.
После чтения данных из Excel файла программа будет проверять, есть ли сегодня у кого-то из ваших друзей день рождения. Если такой день найден, программа будет отправлять электронное письмо этому другу, поздравляя его с днем рождения. После отправки письма программа будет делать пометку в Excel таблице о том, что у этого друга уже было отправлено письмо.
Пример кода для этой программы может выглядеть следующим образом:
import pandas as pd
from openpyxl import load_workbook
import smtplib
from email.message import EmailMessage
import datetime
# Чтение данных из Excel файла
df = pd.read_excel('friends.xlsx')
# Проверка на наличие дня рождения у друзей
today = datetime.datetime.now().strftime('%m-%d')
for index, row in df.iterrows():
if row['birthday'] == today:
# Отправка письма другу
msg = EmailMessage()
msg.set_content(f"С днем рождения, {row['name']}!")
msg['Subject'] = 'Поздравление с днем рождения'
msg['From'] = 'your_email@example.com'
msg['To'] = row['email']
with smtplib.SMTP('smtp.example.com', 587) as smtp:
smtp.login('your_email@example.com', 'your_password')
smtp.send_message(msg)
# Пометка в Excel таблице
df.loc[index, 'email_sent'] = 'Yes'
# Сохранение изменений в Excel файле
with pd.ExcelWriter('friends.xlsx', engine='openpyxl') as writer:
writer.book = load_workbook('friends.xlsx')
df.to_excel(writer, index=False)
Этот код сначала читает данные из Excel файла, затем проверяет, есть ли у кого-то из друзей сегодня день рождения. Если такой друг найден, программа отправляет ему поздравительное письмо и делает пометку в Excel таблице. Не забудьте заменить ‘your_email@example.com’ и ‘your_password’ на свои реальные данные для отправки электронных писем.
Другие уроки курса "Python"
- Управление виртуальными средами в Python
- Основы работы со строками в Python
- Оператор «not» в Python
- Синхронизация потоков с time.sleep()
- Декораторы в Python
- Работа с изображениями PIL
- Сортировка слиянием
- Работа со списками
- Многопоточность и асинхронное программирование в Python
- Ключевое слово global в Python
- Python Поверхностное Копирование
- Печать списка с помощью метода join
- Операторы увеличения и уменьшения переменной
- Операторы увеличения и уменьшения в Python
- Colorama: окрашивание текста в Python
- Использование type hints
- Установка и использование модуля «howdoi»
- Поиск частых элементов в списке
- Принципы SRP и OCP
- Проектирование Singleton с метаклассом
- Форматирование даты с strftime()
- Работа с комбинациями в Python.
- Повторение элементов в Python
- Работа с набором данных CIFAR10 в PyTorch
- Работа с функцией next() в Python
- Установка пакета в Python
- Рекурсия для обращения строки
- Создание генераторов в Python
- Удаление ключа из словаря
- Модуль os: работа с файлами и папками
- Метод join() для объединения элементов строки
- Проверка типа объекта в Python
- Явный импорт в Python
- Использование модуля __future__
- Необязательные аргументы в Python
- Замена подстроки
- Подсчет вхождений элементов
- Избегайте двойного подчеркивания
- Перетасовка списков в Python
- Codecademy в Telegram
- Отслеживание выполнения программы с библиотекой tqdm
- Подчеркивание в REPL
- Метод repr() в Python
- Сравнение def и lambda в Python
- Сравнение строк в Python
- Функция reversed() в Python
- Defaultdict в Python
- Генераторы списков в Python















