我正在使用aiohttp
. 我有一个处理 Mailgun 路由数据的 api。电子邮件有多个附件。我无法阅读所有附件。它只给了我一个。
data
是我收到的。
str(list(data.keys()))
给我清单-['Content-Type', 'Date', 'Dkim-Signature', 'From', 'Message-Id', 'Mime-Version', 'Received', 'Received', 'Received', 'Subject', 'To', 'X-Envelope-From', 'X-Mailgun-Incoming', 'X-Received', 'attachment-count', 'body-html', 'body-plain', 'from', 'message-headers', 'recipient', 'sender', 'signature', 'stripped-html', 'stripped-signature', 'stripped-text', 'subject', 'timestamp', 'token', 'attachment-1']
str(data.get('attachment-count')
当我在电子邮件中发送多个文件时给我 2/3/4 - 这很好。但是只有一个键作为attachment-1
。
疑点:
键中是否attachment-1
表明 ? 中只有一个文件data
?
如果有多个文件,这是否意味着有键 - attachment-1
,attachment-2
....
如何从电子邮件中检索所有文件?
我尝试查找 Mailgun 的文档,但没有获得阅读文件的具体帮助。有人可以将我重定向到相同的代码。其他字段如from
,subject
就好了。
我试过的这个随机的东西也只读取一个文件。不过,这似乎是错误的。
form_data_content_type = [(v.name, v.content_type, v.filename) if (
v and hasattr(v, 'content_type') and hasattr(v, 'filename')) else None for v in
data.values()]
logger.info("No. of attachments " + str(len(form_data_content_type)) # returns 1
* 更新 *
我尝试运行烧瓶服务器并测试了包含多个文件的电子邮件:
print(request.files)
印刷ImmutableMultiDict([('attachment-2', <FileStorage: 'Screen Shot 2015-09-02 at 10.18.37 am.png' ('image/png')>), ('attachment-1', <FileStorage: 'Screen Shot 2015-09-02 at 10.18.36 am.png' ('image/png')>)])
这表明确实有两个文件。
现在,aiohttp 处理 mailgun 数据的方式肯定存在问题:
打印request.post()
只给出一个文件 - 'attachment-1': Field(name='attachment-1', filename='Screen Shot 2015-09-02 at 10.40.18 am.png', file=<_io.BufferedRandom name=10>, content_type='image/png')
. 没有附件2,天知道为什么!