
# 如何用Python发送邮件通知:从入门到实践
在日常工作或项目中,我们经常需要自动发送邮件通知,比如系统报警、数据报告推送或用户注册确认。Python作为一门高效且易用的编程语言,提供了强大的库来轻松实现这一功能。本文将带你一步步掌握用Python发送邮件通知的方法。
## 一、准备工作:了解SMTP协议
发送邮件需要借助SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)。Python内置的`smtplib`库可以让我们通过代码连接邮件服务器,并发送邮件。同时,`email`库用于构建邮件内容(如主题、正文、附件等)。你需要准备一个可用的邮箱账号(推荐使用QQ邮箱或163邮箱),并开启其SMTP服务,获取授权码(而非登录密码)。
## 二、核心步骤:编写发送代码
### 1. 导入必要模块
```python
import smtplib
from email.mime.text import MIMEText
from email.header import Header
```
### 2. 配置邮箱信息
```python
# 发件人邮箱配置
smtp_server = "smtp.qq.com" # 以QQ邮箱为例
sender_email = "your_email@qq.com" # 你的邮箱地址
password = "your_authorization_code" # 授权码
receiver_email = "receiver@example.com" # 收件人邮箱
```
### 3. 构建邮件内容
```python
# 创建纯文本邮件
message = MIMEText("这是Python自动发送的通知邮件。", "plain", "utf-8")
message["From"] = Header("系统通知", "utf-8")
message["To"] = Header("用户", "utf-8")
message["Subject"] = Header("Python邮件测试", "utf-8")
```
### 4. 连接服务器并发送
```python
try:
# 建立SSL连接(端口465)
server = smtplib.SMTP_SSL(smtp_server, 465)
server.login(sender_email, password)
server.sendmail(sender_email, [receiver_email], message.as_string())
print("邮件发送成功!")
except Exception as e:
print(f"发送失败:{e}")
finally:
server.quit()
```
## 三、进阶技巧:添加附件与HTML内容
实际应用中,你可能需要发送带附件的报告或美观的HTML邮件。使用`email.mime.multipart`模块即可实现:
```python
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
# 创建多部分邮件
msg = MIMEMultipart()
msg["From"] = sender_email
msg["To"] = receiver_email
msg["Subject"] = "带附件的数据报告"
# 添加HTML正文
html_content = "
本周数据
请查看附件。
"
msg.attach(MIMEText(html_content, "html", "utf-8"))
# 添加附件(例如一个Excel文件)
attachment = open("report.xlsx", "rb")
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header("Content-Disposition", "attachment", filename="report.xlsx")
msg.attach(part)
# 发送代码与之前相同
```
## 四、安全与最佳实践
1. **保护敏感信息**:切勿将邮箱密码或授权码直接写在代码中,建议使用环境变量(如`os.getenv("EMAIL_PWD")`)或配置文件。
2. **异常处理**:始终用`try...except`捕获网络错误、认证失败等异常,避免程序崩溃。
3. **频率控制**:避免短时间内大量发送邮件,以免被服务器视为垃圾邮件而封禁。
4. **日志记录**:将发送结果写入日志文件,便于排查问题。
## 五、实用场景示例
- **系统监控**:当服务器CPU或内存超过阈值时,自动发送告警邮件。
- **每日报表**:定时任务(如使用`schedule`库)每天自动发送业务数据到管理团队。
- **用户通知**:注册成功、密码重置等场景,通过邮件发送验证链接。
## 结语
用Python发送邮件通知不仅简单,而且非常实用。通过本文介绍的基础方法和进阶技巧,你可以快速为自己的项目添加邮件通知功能。记得先从测试环境开始,确保一切正常后再应用到生产环境。希望这篇文章能帮助你高效完成任务,让自动化的力量为你的工作添砖加瓦!
本文链接:https://www.j520m.site/?id=464
--EOF--
发表于 2026-05-23 。
Comments