如何用Python发送邮件通知 - 2026-05-11 00:20:01

 如何用Python发送邮件通知 - 2026-05-11 00:20:01

# 如何用Python发送邮件通知 在日常工作或项目开发中,自动发送邮件通知是一项非常实用的功能。无论是监控系统告警、数据报表推送,还是用户注册确认,Python都能帮助我们高效完成这一任务。本文将介绍如何使用Python的`smtplib`和`email`库实现邮件发送,并附上完整示例。 ## 一、准备工作 在开始编码前,需要确认以下两点: 1. **Python环境**:确保已安装Python 3.x,无需额外安装第三方库(`smtplib`和`email`均为内置模块)。 2. **邮箱账户**:准备一个用于发送邮件的邮箱(如QQ邮箱、163邮箱或Gmail),并获取授权码(非登录密码)。以QQ邮箱为例: - 登录QQ邮箱,点击“设置” → “账户” → 开启“POP3/SMTP服务”。 - 生成授权码并妥善保存。 ## 二、核心代码实现 以下是一个发送纯文本邮件的完整示例: ```python import smtplib from email.mime.text import MIMEText from email.header import Header # 配置邮箱信息 mail_host = "smtp.qq.com" # 邮件服务器地址 mail_user = "your_email@qq.com" # 发件人邮箱 mail_pass = "your_authorization_code" # 授权码(非密码) sender = "your_email@qq.com" receivers = ["receiver1@example.com", "receiver2@example.com"] # 收件人列表 # 构建邮件内容 message = MIMEText("这是一封Python自动发送的测试邮件。", "plain", "utf-8") message["From"] = Header("Python通知机器人", "utf-8") # 发件人昵称 message["To"] = Header("管理员", "utf-8") # 收件人昵称 message["Subject"] = Header("系统通知:任务完成", "utf-8") # 邮件主题 # 发送邮件 try: smtp_obj = smtplib.SMTP_SSL(mail_host, 465) # 使用SSL加密连接 smtp_obj.login(mail_user, mail_pass) smtp_obj.sendmail(sender, receivers, message.as_string()) print("邮件发送成功!") except smtplib.SMTPException as e: print(f"发送失败:{e}") finally: smtp_obj.quit() ``` ## 三、进阶功能:发送HTML与附件 ### 1. 发送HTML格式邮件 只需将`MIMEText`的第二个参数改为`"html"`,即可嵌入表格、图片或超链接: ```python html_content = """

数据日报

今日访问量:10,234

""" message = MIMEText(html_content, "html", "utf-8") ``` ### 2. 发送带附件的邮件 使用`MIMEMultipart`构建复合邮件: ```python from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders msg = MIMEMultipart() msg["From"] = sender msg["To"] = ",".join(receivers) msg["Subject"] = "带附件的报告" # 添加附件 with open("report.pdf", "rb") as f: attachment = MIMEBase("application", "octet-stream") attachment.set_payload(f.read()) encoders.encode_base64(attachment) attachment.add_header("Content-Disposition", "attachment", filename="report.pdf") msg.attach(attachment) # 发送逻辑同上 ``` ## 四、常见问题与注意事项 - **端口选择**:SSL加密通常使用465端口,TLS加密使用587端口。若使用Gmail,需注意安全设置。 - **授权码安全**:切勿将授权码硬编码在公开代码中,建议使用环境变量或配置文件管理。 - **频率限制**:部分邮箱对单日发送量有限制(如QQ邮箱每日约500封),避免频繁发送导致封禁。 - **错误处理**:务必捕获`smtplib.SMTPException`异常,并记录日志以便排查。 ## 五、实际应用场景 - **自动化运维**:服务器磁盘空间不足或CPU过载时,自动发送告警邮件。 - **数据报表**:每日定时生成销售数据报表,并通过邮件推送给管理层。 - **用户交互**:用户注册后发送验证邮件,或密码重置链接。 ## 结语 通过Python发送邮件通知不仅简单高效,还能大幅提升工作效率。结合定时任务(如`schedule`库或系统cron),你可以轻松构建一套自动化的通知系统。希望本文能帮助你快速上手,让代码主动“说话”,为你的项目增添更多智能化色彩。

本文链接:https://www.j520m.site/?id=356

--EOF--

Comments

您是本站第409693名访客 今日有1篇新文章/评论

AI 助手
在线
你好!有什么可以帮助你的吗?