Python QQ邮箱自动化发邮件教程:带文本与附件示例

2 下载量 96 浏览量 更新于2024-09-01 收藏 332KB PDF 举报
在Python编程中,利用QQ邮箱实现自动发送邮件是一个常见的任务,特别是在需要自动化处理邮件流程的场景下。本文将详细介绍如何使用Python的`smtplib`和`email`库来实现这一功能,这两个库是Python标准库中的邮件处理工具。 首先,你需要确保已设置好QQ邮箱的POP3/SMTP服务,并获取一个用于Python脚本登录的授权码,这并不是日常登录邮箱的密码,而是专门用于程序访问的临时密码。设置好这些基础信息后,发送邮件的步骤主要包括三个部分: 1. 登录邮件:使用`smtplib.SMTP_SSL`方法连接到QQ邮箱的SMTP服务器(SMTP_SSL("smtp.qq.com", 465)),这里使用的是SSL加密连接,确保数据安全。然后调用`s.login()`函数,传入发送方邮箱地址和授权码进行身份验证。 2. 创建邮件:创建一个`MIMEMultipart`对象来构建邮件结构,可以包含文本内容和/或附件。例如,发送纯文本邮件时,使用`MIMEText()`创建文本部分,并设置为'plain'类型,指定编码为'utf-8'。同时,设置邮件的主题和发件人信息。 ```python msg = MIMEMultipart() content = "这个是字符串" msg.attach(MIMEText(content, 'plain', 'utf-8')) msg['Subject'] = "这个是邮件主题" msg['From'] = msg_from ``` 3. 发送邮件:使用`s.sendmail()`方法,传入发件人、收件人列表以及邮件的完整字符串形式(`msg.as_string()`)来发送邮件。发送成功后,打印确认信息。 对于发送携带附件的邮件,只需稍作修改。在`MIMEMultipart`对象中添加`MIMEBase`或`MIMEImage`、`MIMEAudio`等子类来处理不同类型的附件。例如,若要添加一个附件,可以先读取附件文件并转换为`bytes`类型,然后添加到`msg`对象中: ```python # 假设有一个名为'example.txt'的附件 with open('example.txt', 'rb') as f: attachment = MIMEBase('application', 'octet-stream') attachment.set_payload(f.read()) # Base64编码附件内容 encoders.encode_base64(attachment) # 设置附件名称 attachment.add_header('Content-Disposition', 'attachment', filename='example.txt') msg.attach(attachment) ``` 最后,记得关闭SMTP连接: ```python s.quit() ``` 通过以上步骤,你就可以在Python中利用QQ邮箱实现自动发送邮件,无论是文本还是带有附件的邮件。这种技术在自动化测试、通知提醒、数据分析报告发送等场景中都有广泛应用。如果你需要更复杂的邮件发送功能,如HTML格式的邮件、多部分消息或者使用更高级的特性,可以查阅相关文档进一步扩展。