使用Python imaplib从Outlook取邮件时无报错但部分邮件无法获取
问题:imaplib拉取Outlook邮件时部分UID返回OK但无数据
现象说明
使用Python的imaplib从Outlook收件箱拉取邮件,多数情况运行正常,但偶尔出现异常:服务器返回OK结果、目标UID有效且收件箱中可见该邮件,却无法获取邮件数据。这类问题邮件多为回复邮件,主体字符数约5k-10k,部分包含特殊字符,多数带有大量文本页脚,收件人/抄送人约5人。最特殊的是服务器不返回BAD或其他错误信息,仅返回OK但无数据返回。
已执行的排查操作
- 确认邮件存在:通过UID搜索能找到目标邮件,且收件箱中可见
- 尝试多种FETCH命令:
(BODY.PEEK[HEADER.FIELDS (SUBJECT)])、RFC822.HEADER、FLAGS - 将问题邮件导出为msg文件,检查格式未发现异常
脚本基础设置
import imaplib # 已修改_MAXLINE = 50000000 server = imaplib.IMAP4_SSL(imap_server, imap_port) result, data = server.uid('FETCH', 42859, '(BODY.PEEK[HEADER.FIELDS (SUBJECT)])')
相关测试日志
UID搜索结果(范围42858-42865)
10:35.18 > b'FOFI4 EXAMINE INBOX' 10:35.47 < b'* 11892 EXISTS' 10:35.47 < b'* 11892 RECENT' 10:35.47 < b'* FLAGS (\\Seen \\Answered \\Flagged \\Deleted \\Draft $MDNSent)' 10:35.47 < b'* OK [PERMANENTFLAGS ()] Permanent flags' 10:35.47 < b'* OK [UNSEEN 3] Is the first unseen message' 10:35.47 < b'* OK [UIDVALIDITY 14] UIDVALIDITY value' 10:35.47 < b'* OK [UIDNEXT 43441] The next unique identifier value' 10:35.47 < b'FOFI4 OK [READ-ONLY] EXAMINE completed.' 10:35.47 > b'FOFI5 UID SEARCH (UID 42858:42865)' 10:35.51 < b'* SEARCH 42859 42862 42865' 10:35.51 < b'FOFI5 OK SEARCH completed.'
可见问题邮件UID 42862在搜索结果中存在。
正常邮件(UID 42859)的FETCH结果
10:38.79 > b'FOFI6 UID FETCH 42859 (BODY.PEEK[HEADER.FIELDS (SUBJECT)])' 10:38.87 < b'* 11726 FETCH (BODY[HEADER.FIELDS (SUBJECT)] {126}' 10:38.87 read literal size 126 10:38.87 < b' UID 42859)' 10:38.95 < b'FOFI6 OK FETCH completed.' --- result: OK data: [(b'11726 (BODY[HEADER.FIELDS (SUBJECT)] {126}', b'Subject: XXX'), b' UID 42859)']
问题邮件(UID 42862)的FETCH结果
16:07.86 > b'OLDP6 UID FETCH 42862 (BODY.PEEK[HEADER.FIELDS (SUBJECT)])' 16:09.08 < b'OLDP6 OK FETCH completed.' --- result: OK data: [None]
问题邮件的RFC822.SIZE查询结果
11:35.69 > b'MOMM6 UID FETCH 42862 (RFC822.SIZE)' 11:35.72 < b'* 11727 FETCH (RFC822.SIZE 120380 UID 42862)' 11:35.80 < b'MOMM6 OK FETCH completed.' --- result: OK data: [b'11727 (RFC822.SIZE 120380 UID 42862)']
邮件大小与正常邮件相比无异常。
问题邮件的FLAGS查询结果
08:50.93 > b'MFBH6 UID FETCH 42862 (FLAGS)' 08:50.96 < b'* 11727 FETCH (FLAGS (\\Recent) UID 42862)' 08:51.04 < b'MFBH6 OK FETCH completed.' --- result: OK data: [b'11727 (FLAGS (\\Recent) UID 42862)']
求助需求
已检查问题邮件的属性和格式,未发现共性特征,也未找到相关技术文档或案例说明该现象。希望了解可尝试的其他排查命令或方向。
内容的提问来源于stack exchange,提问作者Amy
相关产品推荐
相关产品推荐

