Files
pet-project-server/scripts/smtp-send-test-email.py
T
av 560fd2cc66 deps: ruff обновлён до 0.16, код приведён к новому набору правил
- в 0.16 расширился набор правил по умолчанию: 29 срабатываний там, где 0.15
  давал "All checks passed"
- subprocess.run без явного check (PLW1510) — проставлен check=False там, где
  код и так разбирает returncode сам
- слепые except Exception в оркестраторе бэкапов и скриптах помечены
  noqa: BLE001 с объяснением, почему перехват намеренно широкий
- EXE001 и TRY004 отключены в pyproject: бит исполняемости в репозитории
  ничего не решает, а ValueError при разборе config.toml — про содержимое
  конфига, а не про тип аргумента
- ruff format в 0.16 форматирует python внутри markdown, из-за чего
  переформатирован пример в docs/drafts/gitea-runner-on-demand.md
2026-09-06 17:33:22 +03:00

71 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""
SMTP Test Email Sender for Yandex Cloud Postbox
Скрипт для отправки тестового email через Yandex Cloud Postbox SMTP сервер.
Используется для проверки корректности настроек SMTP аутентификации.
Примеры использования:
python3 smtp-send-test-email.py --login "your-login" --password "smtp-password" --to "recipient@example.com"
"""
import argparse
import smtplib
import sys
from email.message import EmailMessage
def send_test_email(login: str, password: str, to_email: str) -> None:
"""Отправляет тестовое email через Yandex Cloud Postbox SMTP"""
# initialize connection to our email server
smtp = smtplib.SMTP("postbox.cloud.yandex.net", port=587)
smtp.set_debuglevel(2)
smtp.ehlo() # send the extended hello to our server
smtp.starttls() # tell server we want to communicate with TLS encryption
smtp.login(login, password) # login to our email server
message = EmailMessage()
message.set_content("Hello, world! This is a test email from Yandex Cloud Postbox.")
message.add_header("From", "service@vakhrushev.me")
message.add_header("To", to_email)
message.add_header("Subject", "Test Email from Yandex Cloud Postbox")
# send our email message
smtp.send_message(message)
smtp.quit() # finally, don't forget to close the connection
print(f"Test email successfully sent to {to_email}")
def main() -> None:
parser = argparse.ArgumentParser(
description="Send a test email via Yandex Cloud Postbox SMTP server."
)
parser.add_argument(
"--login", required=True, help="SMTP login (usually your email address)"
)
parser.add_argument(
"--password",
required=True,
help="SMTP password (generated using smtp-convert-secret-key-to-password.py)",
)
parser.add_argument("--to", required=True, help="Recipient email address")
args = parser.parse_args()
try:
send_test_email(args.login, args.password, args.to)
except Exception as e: # noqa: BLE001
print(f"Error sending email: {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
main()