电脑之家
柔彩主题三 · 更轻盈的阅读体验

Python发送邮件脚本:几行代码搞定自动发信

发布时间:2026-04-13 22:30:31 阅读:13 次

公司日报要每天手动发给领导?监控脚本跑崩了还得摸黑爬起来看邮箱?其实用 Python 写个发邮件脚本,不到 20 行就能让电脑替你干活。

先装个轮子:smtplib + email

Python 自带 smtplibemail 模块,不用额外装包。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 地址和端口。别把授权码硬编码在脚本里——上线前建议挪到环境变量或配置文件中。

写完试一次,比配微信自动回复还快。下次凌晨三点服务器报警,你就躺着等邮件提醒,真·懒人福音。