python - 解析附件名称的 IMAP 电子邮件 BODYSTRUCTURE

标签 python email imap

我编写了一个 Python 脚本来通过 IMAP(使用 Python 的 imaplib)访问、管理和过滤我的电子邮件。

为了获取电子邮件的附件列表(无需先下载整封电子邮件),我使用电子邮件的 UID 获取了电子邮件的主体结构,即:

imap4.uid('FETCH', emailUID, '(BODYSTRUCTURE)')

并从那里检索附件名称。

通常,包含附件名称的“部分”如下所示:

("attachment" ("filename" "This is the first attachment.zip"))

但是有几次,我遇到了类似的事情:

("attachment" ("filename" {34}', 'This is the second attachment.docx'))

我在某处读到,IMAP 有时不使用双引号表示字符串,而是使用大括号,字符串长度后跟实际字符串(不带引号)。

例如

{16}This is a string

但上面的字符串似乎并没有严格遵守这一点(右花括号后有一个单引号、一个逗号和一个空格,并且字符串本身用单引号括起来)。

当我下载整封电子邮件时,包含该附件的邮件部分的 header 看起来很正常:

Content-Type: application/docx
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="This is the second attachment.docx"

我如何解释(呃……解析)“异常”的 body 结构,理解额外的单引号、逗号等……

那是“标准”吗?

最佳答案

您看到的是一个破损的文字,可能被切割和浪费损坏了?文字看起来像

{5}
Hello

也就是说,长度,然后是一个 CRLF,然后是那么多 字节(不是字符):

{4}
🐮

关于python - 解析附件名称的 IMAP 电子邮件 BODYSTRUCTURE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31335415/

相关文章:

delphi - 使用 imap 仅从 Gmail 'sent items' 下载一些电子邮件 header

python - 如何用 Python 编写一个简单的电子邮件监听器

python - 为什么 token.py 的存在会导致内置 help() 中断?

python - django 不会在我的模型中存储引用为外键的 authUser

python - 使用 Python 获取唯一的硬件 ID

android - 当收到电子邮件时,如何让 Android 上的应用程序自动启动?

python - 使用 pypdf2 将元数据添加到 pdf

java - 部署到 war 的 Spring Boot 不发送谷歌电子邮件

html - 使用一些 html 从 Qt 中打开默认邮件应用程序

java - 无法获取 MimeMessage 的 message_ID