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

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

发布时间: 2025-07-11 13:12:01 浏览量: 本文共包含759个文字,预计阅读时间2分钟

在自动化办公场景中,邮件自动发送工具能显著提升工作效率。Python标准库中的smtplib模块因其轻量化和灵活性,成为开发邮件自动化脚本的热门选择。本文将以发送带附件的邮件为例,解析smtplib模块的核心操作流程。

环境配置与前置条件

使用smtplib前需确保本地Python环境版本≥3.6,并提前开通发件邮箱的SMTP服务权限。以QQ邮箱为例,需登录网页版邮箱进入设置-账户页,生成专属SMTP授权码(非邮箱登录密码),该授权码将作为后续程序中的身份凭证。

邮件基础框架搭建

通过email.mime模块构造邮件主体:

```python

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

msg = MIMEMultipart

msg['From'] = ''

msg['To'] = ''

msg['Subject'] = '自动化周报-销售数据'

```

此处创建混合类型(MIMEMultipart)邮件对象,分别设定发件人、收件人和主题字段。文本内容可通过MIMEText附加到主体中:

```python

content = MIMEText('附件为本周销售明细表,请查收。', 'plain', 'utf-8')

msg.attach(content)

```

附件添加技巧

添加附件时需指定文件类型编码方式。以下代码演示添加Excel文件的操作:

```python

from email.mime.application import MIMEApplication

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

attach = MIMEApplication(f.read)

attach.add_header('Content-Disposition', 'attachment', filename='Q3销售数据.xlsx')

msg.attach(attach)

```

关键点在于使用二进制模式('rb')打开文件,通过MIMEApplication封装数据流。add_header方法中的filename参数定义收件人看到的附件名称,支持中文命名但需确保编码正确。

邮件发送执行阶段

建立SMTP连接时需注意端口选择:

```python

import smtplib

smtp = smtplib.SMTP_SSL('smtp.', 465)

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

smtp.sendmail(msg['From'], msg['To'], msg.as_string)

smtp.quit

```

SSL加密端口465比传统25端口更安全,主流邮箱服务商均已支持。msg.as_string方法将构建好的邮件对象序列化为符合SMTP协议的标准文本格式。

注意事项

1. 附件总大小不宜超过25MB,多数邮件服务器会拦截大体积附件

2. 群发邮件时建议采用循环单发模式,避免被识别为垃圾邮件

3. 生产环境建议增加异常捕获机制,例如网络中断重试功能

4. 涉及敏感数据时,可通过email.utils模块增加邮件头部的加密声明