公司日报要每天手动发给领导?监控脚本跑崩了还得摸黑爬起来看邮箱?其实用 Python 写个发邮件脚本,不到 20 行就能让电脑替你干活。
先装个轮子:smtplib + email
Python 自带 smtplib 和 email 模块,不用额外装包。Windows、macOS、Linux 都能直接跑,前提是你的邮箱支持 SMTP(主流邮箱如 QQ、163、Gmail 全都支持)。
以 QQ 邮箱为例:开通 SMTP 并获取授权码
登录 QQ 邮箱 → 左侧「设置」→ 「账户」→ 往下拉找到「POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务」→ 开启「SMTP 服务」→ 按提示生成「授权码」(不是你的登录密码!)。
最简可用脚本长这样
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# 配置信息(替换成你自己的)
smtp_server = "smtp.qq.com"
smtp_port = 587
sender = "your_email@qq.com"
password = "你的QQ邮箱授权码" # 注意:不是登录密码!
receiver = "boss@company.com"
# 构建邮件内容
msg = MIMEMultipart()
msg["From"] = sender
msg["To"] = receiver
msg["Subject"] = "每日服务器状态报告"
body = "CPU 使用率 82%,磁盘剩余 12GB,无异常进程。"
msg.attach(MIMEText(body, "plain", "utf-8"))
# 发送
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # 启用加密
server.login(sender, password)
server.send_message(msg)
server.quit()
print("邮件已发出")
except Exception as e:
print("发送失败:", e)把上面代码保存为 send_mail.py,改好邮箱、授权码和收件人,双击或命令行运行 python send_mail.py,立马就能看到收件箱多了一封信。
想带附件?加两行就行
比如每天自动生成的 log.txt 要一起发过去:
from email.mime.base import MIMEBase
from email import encoders
# 在 msg.attach(...) 前插入:
with open("log.txt", "rb") as f:
part = MIMEBase("application", "octet-stream")
part.set_payload(f.read())
encoders.encode_base64(part)
part.add_header(
"Content-Disposition",
f"attachment; filename=log.txt",
)
msg.attach(part)小提醒
163 邮箱用 smtp.163.com:465(SSL),Gmail 用 smtp.gmail.com:587 并确保开启「两步验证+应用专用密码」;企业邮箱请找 IT 部门要 SMTP 地址和端口。别把授权码硬编码在脚本里——上线前建议挪到环境变量或配置文件中。
写完试一次,比配微信自动回复还快。下次凌晨三点服务器报警,你就躺着等邮件提醒,真·懒人福音。