#!/usr/bin/env python3
"""Generic email sender via Apple iCloud SMTP.

Credentials read from env vars:
  APPLE_EMAIL           - your Apple ID email
  APPLE_APP_PASSWORD    - Apple app-specific password
  RECIPIENT             - defaults to sage.stockmans@pm.me

Usage: python3 send_apple_email.py --to sage.stockmans@pm.me --subject "Hello" --body "Email content" [--html]
"""

import os
import sys
import smtplib
import argparse
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

APPLE_EMAIL = os.environ.get("APPLE_EMAIL", "").strip()
APPLE_APP_PASSWORD = os.environ.get("APPLE_APP_PASSWORD", "").strip()
SMTP_HOST = "smtp.mail.me.com"
SMTP_PORT = 587
DEFAULT_RECIPIENT = "sage.stockmans@pm.me"


def send_email(subject, body, to_addr, html=False):
    if not APPLE_EMAIL or not APPLE_APP_PASSWORD:
        print("Error: APPLE_EMAIL and APPLE_APP_PASSWORD env vars must be set.", file=sys.stderr)
        sys.exit(1)

    msg = MIMEMultipart()
    msg["From"] = APPLE_EMAIL
    msg["To"] = to_addr
    msg["Subject"] = subject
    msg.attach(MIMEText(body, "html" if html else "plain", "utf-8"))

    with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as server:
        server.starttls()
        server.login(APPLE_EMAIL, APPLE_APP_PASSWORD)
        server.sendmail(APPLE_EMAIL, to_addr, msg.as_string())

    print(f"Sent email from {APPLE_EMAIL} to {to_addr}: {subject}")


def main():
    parser = argparse.ArgumentParser(description="Send email via Apple iCloud SMTP")
    parser.add_argument("--to", default=DEFAULT_RECIPIENT, help="Recipient email")
    parser.add_argument("--subject", required=True, help="Email subject")
    parser.add_argument("--body", required=True, help="Email body (or '-' for stdin)")
    parser.add_argument("--html", action="store_true", help="Send as HTML")
    args = parser.parse_args()

    body = args.body
    if body == "-":
        body = sys.stdin.read()

    send_email(args.subject, body, args.to, html=args.html)


if __name__ == "__main__":
    main()
