我写了一个Python脚本来通过IMAP访问,管理和过滤我的电子邮件(使用Python的imaplib).
要获取电子邮件的附件列表(不先下载整个电子邮件),我使用电子邮件的UID获取电子邮件的bodystructure,即:
imap4.uid('FETCH', emailUID, '(BODYSTRUCTURE)')
Run Code Online (Sandbox Code Playgroud)
并从那里检索附件名称.
通常,包含附件名称的"部分"看起来像:
("attachment" ("filename" "This is the first attachment.zip"))
Run Code Online (Sandbox Code Playgroud)
但有几次,我遇到了类似的事情:
("attachment" ("filename" {34}', 'This is the second attachment.docx'))
Run Code Online (Sandbox Code Playgroud)
我读到某个地方,有时候,IMAP会使用带有字符串长度的大括号,后跟实际字符串(不带引号),而不是用双引号括起来表示字符串.
例如
{16}This is a string
Run Code Online (Sandbox Code Playgroud)
但上面的字符串似乎并没有严格遵守(在结束的大括号后面有一个单引号,一个逗号和一个空格,字符串本身用单引号括起来).
当我下载整个电子邮件时,包含该附件的邮件部分的标题似乎正常:
Content-Type: application/docx
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="This is the second attachment.docx"
Run Code Online (Sandbox Code Playgroud)
我如何解释(呃...解析)"异常"的身体结构,理解额外的单引号,逗号等...
那是"标准"吗?
你正在看的是一个破损的文字,可能是因为剪切和浪费而受损?文字看起来像
{5}
Hello
Run Code Online (Sandbox Code Playgroud)
也就是说,长度,然后是CRLF,然后是那么多字节(不是字符):
{4}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1068 次 |
| 最近记录: |