python - 无需下载即可获取 Gmail 附件文件名

标签 python gmail attachment imaplib

我正在尝试从可能包含一些大附件(大约 30MB)的 Gmail 帐户中获取所有邮件。我只需要名称,而不是整个文件。我找到一段代码来获取消息和附件名称,但它会下载文件然后读取其名称:

import imaplib, email

#log in and select the inbox
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('username', 'password')
mail.select('inbox')

#get uids of all messages
result, data = mail.uid('search', None, 'ALL') 
uids = data[0].split()

#read the lastest message
result, data = mail.uid('fetch', uids[-1], '(RFC822)')
m = email.message_from_string(data[0][1])

if m.get_content_maintype() == 'multipart': #multipart messages only
    for part in m.walk():
        #find the attachment part
        if part.get_content_maintype() == 'multipart': continue
        if part.get('Content-Disposition') is None: continue

        #save the attachment in the program directory
        filename = part.get_filename()
        fp = open(filename, 'wb')
        fp.write(part.get_payload(decode=True))
        fp.close()
        print '%s saved!' % filename

我必须每分钟执行一次,所以我无法下载数百 MB 的数据。我是网络脚本的新手,所以有人可以帮助我吗?我实际上不需要使用 imaplib,任何 python 库对我来说都可以。

最好的问候

最佳答案

您可以指定 BODYSTRUCTURE,而不是获取完整内容 RFC822

imaplib 生成的数据结构非常困惑,但您应该能够找到邮件每个部分的文件名、内容类型和大小,而无需下载整个内容。

关于python - 无需下载即可获取 Gmail 附件文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13663672/

相关文章:

selenium-webdriver - "For your protection, you can' t 从此设备登录。” usando selenium web-drivers en GCP Compute Engine

php - 使用 HTML 和 PHP 存储和检索图像/视频/声音附件的最佳方法是什么?

Python 从 Excel 数据创建字典(带元组)

python - 多维数组中列的平方和的平方根

python - 每 20 个字符后添加换行符并将结果保存为新字符串

python - 由字母组成的字母

PHP:Gmail 的邮件包含无效的 HTML 和随机行话

objective-c - Gmail API 用于 Objective-C?

c# - Exchange Web 服务 - 处理消息和访问附件

php - PHP 的 mail() 函数附件支持在 Windows 上是否有点损坏?