专业接各种小工具软件及爬虫软件开发,联系Q:2391047879

Python自动邮件发送工具(带附件)

发布时间: 2025-05-06 13:07:13 浏览量: 本文共包含938个文字,预计阅读时间3分钟

在日常办公场景中,邮件的批量发送和附件处理常让人头疼。手动操作不仅效率低,还容易出错。Python凭借其简洁的语法和丰富的第三方库,能够快速实现邮件自动化,尤其适合需要定期发送报告、通知的场景。本文将介绍如何通过Python脚本实现带附件的邮件自动发送功能。

核心工具:smtplib与email库

Python内置的`smtplib`和`email`库是邮件功能的基础模块。前者负责与邮件服务器通信,后者用于构造邮件内容。对于附件处理,需使用`MIME`协议对文件进行编码。例如,发送Excel报表时,需将文件转为二进制流并绑定到邮件体中。

实现步骤分解

1. 邮件内容配置

使用`MIMEMultipart`对象创建邮件主体,包括发件人、收件人、主题和正文。正文支持HTML格式,可通过`MIMEText`模块嵌入表格或超链接,提升信息可读性。

```python

from email.mime.multipart import MIMEMultipart

msg = MIMEMultipart

msg['From'] = ''

msg['To'] = ''

msg['Subject'] = '月度数据报表'

body = MIMEText('正文内容,可包含HTML标签', 'html')

msg.attach(body)

```

2. 附件添加逻辑

通过`MIMEApplication`读取本地文件并添加到邮件对象。需注意文件名含中文时,需额外处理编码问题,避免接收方显示乱码。

```python

from email.mime.application import MIMEApplication

with open('报表.xlsx', 'rb') as f:

attach = MIMEApplication(f.read, Name='报表.xlsx')

attach['Content-Disposition'] = 'attachment; filename="report.xlsx"'

msg.attach(attach)

```

3. 服务器连接与发送

使用SMTP协议的SSL加密端口(如465)可提升安全性。部分企业邮箱(如腾讯企业邮)需开启独立密码授权,而非直接使用登录密码。

```python

import smtplib

with smtplib.SMTP_SSL('smtp.', 465) as server:

server.login('', '授权码')

server.send_message(msg)

Python自动邮件发送工具(带附件)

```

避坑指南

  • 附件大小限制:多数邮件服务商限制附件不超过25MB,大文件建议改用云盘链接。
  • 发信频率控制:免费邮箱(如163、QQ)通常限制单日发信量,高频场景需切换企业邮箱或第三方API服务。
  • 测试环节:正式运行前建议先用本地调试环境或邮件测试工具(如Mailtrap)模拟发送,避免触发垃圾邮件规则。
  • 典型应用场景

    1. 系统监控报警:服务器资源占用超阈值时,自动发送带日志附件的告警邮件。

    2. 电商运营:每日定时向供应商推送订单清单Excel表。

    3. 人力资源:批量发送面试邀请函及岗位说明PDF附件。

    通过合理封装代码,上述功能可集成到Flask或Django后台中,实现完全自动化的邮件工作流。对于需要多附件或动态生成内容的场景,可通过循环遍历文件目录或调用Jinja2模板引擎进一步扩展功能。