概述
连邮件 API/SMTP 群发邮件,并把发送记录(收件人、时间、状态)落为 xlsx。
触发词
邮件群发、群发邮件、邮件记录、批量发邮件、邮件API、发信记录
工作流
- 从环境变量读取 MAIL_USER / MAIL_PASS / SMTP_HOST。
- 读取收件人列表(CSV/环境变量)。
- 逐封发送(SMTP),捕获成功/失败。
- 写入发送记录 xlsx。
产出物(生成即用·群发+记录xlsx)
import os, smtplib, csv
from openpyxl import Workbook
from email.mime.text import MIMEText
MAIL_USER = os.environ["MAIL_USER"]
MAIL_PASS = os.environ["MAIL_PASS"]
SMTP_HOST = os.environ["SMTP_HOST"]
RECIPIENTS = os.environ.get("RECIPIENTS", "a@x.com,b@x.com").split(",")
srv = smtplib.SMTP(SMTP_HOST, 587)
srv.starttls(); srv.login(MAIL_USER, MAIL_PASS)
wb = Workbook(); ws = wb.active; ws.append(["to","status"])
for to in RECIPIENTS:
try:
m = MIMEText("邮件正文(请替换为你的内容)")
m["Subject"] = "主题"; m["From"] = MAIL_USER; m["To"] = to
srv.sendmail(MAIL_USER, [to], m.as_string())
ws.append([to, "sent"])
except Exception as e:
ws.append([to, "fail:%s" % e])
srv.quit(); wb.save("mail_log.xlsx")
print("已群发并生成 mail_log.xlsx")
使用示例
设 MAIL_USER/PASS/SMTP_HOST + 收件人 → 群发并出 mail_log.xlsx。
红线(必须遵守)
- 邮箱账号密码来自环境变量,禁止硬编码。
- 正文/主题用占位,不夹带个人内容;收件人用中性示例。
大白话说明
你给邮箱授权和名单,我帮你批量发信,并把谁收到没收到记成表。