当我们使用电子邮件客户端如QQ邮箱时,有时候需要下载邮件中的附件。以下是一种自动下载邮件附件的方法:
- 首先在电脑中打开QQ邮箱,并登录自己的账号。
- 在QQ邮箱的左侧导航栏中,选择“收件箱”。
- 打开一个包含附件的邮件,在邮件正文的下方找到“下载”按钮,并点击它。
- 在弹出的窗口中,选择“浏览”选项。
- 在打开的窗口中,选择保存附件的位置,例如桌面,然后点击“保存”按钮。
- 最后,点击“下载”按钮即可完成附件的下载。
以上步骤可以帮助我们手动下载邮件附件。然而,如果我们需要批量下载多个邮件的附件时,手动操作就会变得非常繁琐。这时,我们可以考虑使用Python编写脚本自动下载邮件附件。下面是一个简单的Python脚本示例:
完整的获取邮件代码:!/usr/bin/env python
-- coding:utf-8 --
import os
import email
import imaplib
from email.utils import parseaddr
from email.header import decode_header接收邮件解码等模块
连接邮箱服务器并登录账号
mail_server = imaplib.IMAP4_SSL(‘imap.qq.com’)
mail_server.login(‘your_email@qq.com’, ‘your_password’)选择收件箱并搜索带附件的邮件
mail_server.select(‘inbox’)
result, data = mail_server.uid(‘search’, None, ‘(X-IMAP-浸润式) attachment’) # 这里需要将浸润式替换成正确的X-IMAP标记表示有附件的邮件
mail_ids = data[0].split() # 获取所有带附件邮件的ID列表循环下载每个邮件的附件并保存到指定目录
for mail_id in mail_ids:
result, message = mail_server.uid(‘fetch’, mail_id, ‘(BODY.PEEK[HEADER])’) # 只获取邮件头部信息,不下载正文中链接等消耗流量的内容
raw_email = message[0][1].decode(‘utf-8’) # 将邮件头部信息解码为字符串
email_message = email.message_from_string(raw_email)
for part in email_message.walk(): # 遍历邮件中的每一个部分(正文、附件等)
if part.get_content_maintype() == ‘multipart’: # 如果是多部分组成的复合体,则继续遍历其内部的部分
continue
if part.get(‘Content-Disposition’) is None: # 如果该部分没有Content-Disposition字段(例如正文部分),则跳过
continue
filename = part.get_filename() # 获取附件的文件名(如果有的话)
if bool(filename): # 如果文件名不为空(即存在文件名)
filepath = os.path.join(‘attachment_folder’, filename) # 拼接保存路径和文件名,保存到指定目录下
with open(filepath, ‘wb’) as f:
f.write(part.get_payload(decode=True)) # 将附件内容写入文件,decode=True表示对附件内容进行解码关闭邮箱服务器连接
mail_server.logout()