Как автоматизировать процесс рассылки писем по электронной почте. Будет полезно абсолютно каждому, кто когда-либо сталкивался с необходимостью отправлять информацию или рекламные сообщения большому количеству получателей.
Код:
import os
import time
import imaplib
import smtplib
import logging
from typing import Optional
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from email.utils import formatdate
# Логгирование
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s — %(levelname)s — %(message)s",
handlers=[
logging.FileHandler("email_sender.log"),
logging.StreamHandler()
]
)
def create_email(
from_addr: str,
to_addr: str,
subject: str,
body: str,
attachment_path: Optional[str] = None
) -> MIMEMultipart:
logging.info("Создание письма...")
msg = MIMEMultipart()
msg["From"] = from_addr
msg["To"] = to_addr
msg["Subject"] = Header(subject, 'utf-8')
msg["Date"] = formatdate(localtime=True)
msg.attach(MIMEText(body, 'html', 'utf-8'))
if attachment_path and os.path.exists(attachment_path):
try:
part = MIMEBase('application', "octet-stream")
with open(attachment_path, "rb") as file:
part.set_payload(file.read())
encoders.encode_base64(part)
part.add_header(
'Content-Disposition',
f'attachment; filename="{os.path.basename(attachment_path)}"'
)
msg.attach(part)
logging.info(f"Файл прикреплен: {attachment_path}")
except Exception as e:
logging.error(f"Ошибка при прикреплении файла: {e}")
else:
logging.warning("Файл не найден или не указан — письмо будет без вложения.")
return msg
def send_email(
smtp_server: str,
smtp_port: int,
from_addr: str,
from_pass: str,
to_addr: str,
message: MIMEMultipart
) -> None:
try:
with smtplib.SMTP(smtp_server, smtp_port) as smtp:
smtp.starttls()
smtp.login(from_addr, from_pass)
smtp.sendmail(from_addr, to_addr, message.as_string())
logging.info(f"Письмо отправлено на {to_addr}")
except Exception as e:
logging.error(f"Ошибка отправки письма: {e}")
def save_to_sent(
imap_server: str,
imap_port: int,
from_addr: str,
from_pass: str,
message: MIMEMultipart
) -> None:
try:
with imaplib.IMAP4(imap_server, imap_port) as imap:
imap.login(from_addr, from_pass)
imap.select('Sent')
imap.append('Sent', None, imaplib.Time2Internaldate(time.time()), message.as_bytes())
logging.info("Письмо сохранено в 'Sent'")
except Exception as e:
logging.error(f"Ошибка сохранения письма: {e}")
if __name__ == "__main__":
FROM_EMAIL = "corp-mail@mail.ru"
FROM_PASSWORD = "*"
SMTP_SERVER = "*.mail.ru"
SMTP_PORT = 25
IMAP_PORT = 143
TO_EMAIL = "students-mail@mail.ru"
SUBJECT = "Тема сообщения"
BODY = "Текст сообщения"
ATTACHMENT_PATH = "сертификат.pdf"
try:
email_msg = create_email(FROM_EMAIL, TO_EMAIL, SUBJECT, BODY, ATTACHMENT_PATH)
send_email(SMTP_SERVER, SMTP_PORT, FROM_EMAIL, FROM_PASSWORD, TO_EMAIL, email_msg)
save_to_sent(SMTP_SERVER, IMAP_PORT, FROM_EMAIL, FROM_PASSWORD, email_msg)
except Exception as e:
logging.critical(f"Критическая ошибка: {e}")
#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
С его помощью вы легко сохраните любимый контент для офлайн-просмотра
Ключевые возможности:
1. Клонируйте репозиторий:
git clone https://github.com/Efeckc17/YoutubeGO.git
cd YoutubeGO
2. Убедитесь, что установлен Python 3.7+:
python --version
3. Установите зависимости:
pip install -r requirements.txt
4. Установите FFmpeg для обработки аудио и видео:
- macOS:
brew install ffmpeg
- Linux (Debian/Ubuntu):
sudo apt install ffmpeg
- Linux (Arch-based):
sudo pacman -S ffmpeg
- Windows (через winget):
winget install FFmpeg
python main.py
YoutubeGO — надежный помощник для сохранения контента в высоком качестве и удобном формате.
#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
pip install img2table
Для использования с определённым OCR-сервисом:
pip install img2table[tesseract] # или [paddle], [easyocr], [gcp], [aws], [azure]
Пример использования:
from img2table.document import Image
from img2table.ocr import TesseractOCR
# Инициализация OCR
ocr = TesseractOCR()
# Загрузка изображения
img = Image("путь_к_изображению.jpg")
# Извлечение таблиц
tables = img.extract_tables(ocr=ocr)
# Получение первой таблицы в виде DataFrame
df = tables[0].df
Благодаря использованию OpenCV, img2table эффективно работает на CPU, не требуя мощных вычислительных ресурсв.
#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
OpenCV-Face-Recognition — для всех, кто интересуется компьютерным зрением и хочет реализовать проект по распознаванию лиц в реальном времени.
Проект включает три основных этап:
Подробные инструкции и примеры кода доступны в репозитории.
#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Если ты всё ещё руками сидишь на бирже — значит, ты пропускаешь профит.
🔁 Единый синтаксис для всех бирж — не нужно каждый раз переучиваться.
pip install ccxt
Пример использования на Python:
import ccxt
exchange = ccxt.binance()
markets = exchange.load_markets()
ticker = exchange.fetch_ticker('BTC/USDT')
print(ticker)
#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите автоматизировать обработку изображений без фотошопа?
Скрипт-проект на базе библиотеки
rembg
:pip install rembg
Пример кода:
from rembg import remove
def remove_background(input_path: str, output_path: str) -> None:
"""Удаляет фон с изображения и сохраняет результат."""
with open(input_path, 'rb') as input_file:
with open(output_path, 'wb') as output_file:
image_bytes: bytes = input_file.read()
output_bytes: bytes = remove(image_bytes)
output_file.write(output_bytes)
if __name__ == "__main__":
remove_background('input.png', 'output.png')
#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
Если тебе нужно быстро замазать лица на снимке — вот тебе универсальный скрипт!
Работает на основе каскадов Хаара и добавляет эффект размытия по каждому найденному лицу.
import cv2
from typing import Tuple
def load_image(path: str) -> cv2.Mat:
"""Загружает изображение с указанного пути."""
image = cv2.imread(path)
if image is None:
raise FileNotFoundError(f"Изображение не найдено: {path}")
return image
def detect_faces(image: cv2.Mat) -> Tuple[Tuple[int, int, int, int], ...]:
"""Находит лица на изображении с помощью каскада Хаара."""
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier(
cv2.data.haarcascades + "haarcascade_frontalface_default.xml"
)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
return tuple(faces)
def blur_faces(image: cv2.Mat, faces: Tuple[Tuple[int, int, int, int], ...]) -> cv2.Mat:
"""Размывает найденные лица на изображении."""
for (x, y, w, h) in faces:
face_roi = image[y:y+h, x:x+w]
blurred = cv2.GaussianBlur(face_roi, (99, 99), 30)
image[y:y+h, x:x+w] = blurred
return image
def save_image(image: cv2.Mat, path: str) -> None:
"""Сохраняет изображение на диск."""
cv2.imwrite(path, image)
if __name__ == "__main__":
input_path = "/home/kali/Coding/TEST/man.png"
output_path = "blurred_faces.jpg"
img = load_image(input_path)
found_faces = detect_faces(img)
print(f"👀 Найдено лиц: {len(found_faces)}")
blurred_img = blur_faces(img, found_faces)
save_image(blurred_img, output_path)
print(f"✅ Сохранено: {output_path}")
#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
git clone https://github.com/RishiDesai/FaceEnhance
cd FaceEnhance
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python install.py
python test.py --input examples/dany_gpt_1.png --ref examples/dany_face.jpg --out examples/dany_enhanced.png
python demo.py
) для быстрого теста без кода.#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
Fake2db — настоящая находка для разработчиков, которым нужно «оживить» проект фейковыми данными за пару секунд.
Забудьте про ручной ввод или костыли в Excel — теперь всё автоматом, красиво и быстро.
Пример: хочешь протестить API магазина?
fake2db
закинет тебе в базу 1000 товаров с ценами, фотками и описаниями — и всё это одной командой.Поддерживает:
Идеальный инструмент, когда нужно показать «живой» проект, а заказчик не дал ни строки данных.
pip install fake2db
#python #soft #code #github
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM