【发布时间】:2015-09-28 21:17:04
【问题描述】:
我编写了一个 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
但上面的字符串似乎并没有严格遵守这一点(在右大括号后有一个单引号、一个逗号和一个空格,并且字符串本身用单引号括起来)。
当我下载整个电子邮件时,包含该附件的邮件部分的标题看起来很正常:
Content-Type: application/docx
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="This is the second attachment.docx"
我如何解释(erm...解析)“异常”的正文结构,理解额外的单引号、逗号等...
那是“标准”吗?
【问题讨论】: