Invoice / mailer.py
Corin1998's picture
Upload 7 files
9f4d112 verified
# mailer.py
import os
import smtplib
from email.message import EmailMessage
from typing import Optional
def send_email_smtp(to: str, subject: str, body: str, attachment_path: Optional[str] = None):
host = os.getenv("SMTP_HOST")
port = int(os.getenv("SMTP_PORT", "587"))
user = os.getenv("SMTP_USER")
password = os.getenv("SMTP_PASS")
sender = os.getenv("SMTP_FROM", user or "no-reply@example.com")
use_tls = os.getenv("SMTP_USE_TLS", "1") == "1"
if not host or not user or not password:
# 環境未設定なら NOOP(成功扱いにして詳細メッセージを返す)
return True, "SMTP not configured; skipped sending (set SMTP_HOST/SMTP_PORT/SMTP_USER/SMTP_PASS/SMTP_FROM)"
msg = EmailMessage()
msg["From"] = sender
msg["To"] = to
msg["Subject"] = subject
msg.set_content(body)
if attachment_path:
with open(attachment_path, "rb") as f:
data = f.read()
msg.add_attachment(data, maintype="application", subtype="pdf", filename=os.path.basename(attachment_path))
try:
with smtplib.SMTP(host, port) as server:
if use_tls:
server.starttls()
server.login(user, password)
server.send_message(msg)
return True, "sent"
except Exception as e:
return False, f"send failed: {e}"