我正在登录到一个服务器与我的凭据,我搜索一个特定主题的电子邮件。这封电子邮件有一个附件,我想知道它的文件名和以后可能的扩展名。
我在Python中这样做,但是每次请求文件名时,如果附件中有一个文件名,则返回NONE。
from imaplib import *
import base64
import email
import os
import sys
import errno
import mimetypes
server = IMAP4("SERVER LOCATION");
server.login("USER", "PASS");
server.select("Inbox");
typ, data = server.search(None, '(SUBJECT "Hello World")');
for num in data[0].split():
typ, data = server.fetch(num, '(RFC822)');
print (data);
msg = email.message_from_string(str(data[0][1]));
counter = 1
for part in msg.walk():
print (part.as_string() + "\n")
# multipart/* are just containers
if part.get_content_maintype() == 'multipart':
continue
# Applications should really sanitize the given filename so that an
# email message can't be used to overwrite important files
filename = part.get_filename()
print (filename);
fn = msg.get_filename()
print("The Filename was:", (fn));
if not filename:
ext = mimetypes.guess_extension(part.get_content_type())
if not ext:
# Use a generic bag-of-bits extension
ext = '.bin'
filename = 'part-%03d%s' % (counter, ext)
counter += 1
server.close()
server.logout();
我不知道为什么我一直得不到答案,有什么帮助吗?
我也面临类似的问题。只需移除 如果part.get_content_maintype()=多部分: 持续 条件和它将工作良好。
我也有同样的问题,以下是我为解决这个问题所做的:
如果你把所有东西都放在“部分”里,你真的看到那里的文件了吗?
相关问题 更多 >
编程相关推荐