从未读邮件中下载数据到独立文件 Python
我正在尝试将未读邮件中的数据下载到csv文件中,也就是说,每封未读邮件的数据都放到一个单独的csv文件里。我已经可以使用imaplab和email来获取未读邮件的内容,但我不知道怎么把这些内容保存到不同的csv文件里,并用邮件内容的第一行来命名这些文件。以下是我目前的代码。
import imaplib
import email
server = imaplib.IMAP4_SSL('imap.gmail.com')
server.login('email@gmail.com', 'password')
server.select('[Gmail]/All Mail')
resp, items = server.search(None, "(UNSEEN)")
for mail in items[0].split():
resp, data = server.fetch(mail, '(RFC822)')
body = data[0][1]
msg = email.message_from_string(body)
content = msg.get_payload(decode=True)
print content
谢谢。
解决方案:
import email, imaplib, os
detach_dir = '.'
# connecting to the gmail imap server
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login('email@gmail.com', 'password')
m.select("[Gmail]/All Mail")
resp, items = m.search(None, "(UNSEEN)")
for mail in items[0].split():
resp, data = m.fetch(mail, '(RFC822)')
body = data[0][1]
msg = email.message_from_string(body)
content = msg.get_payload(decode=True)
filename = content[2:7]
counter = 1
if not filename:
filename = 'part-%03d%s' % (counter, 'bin')
counter += 1
file_path = os.path.join(detach_dir, filename)
if not os.path.isfile(file_path) :
fp = open(file_path+".csv", 'wb')
fp.write(content)
fp.close()
m.logout()
1 个回答
0
if not os.path.isfile(att_path) :
for files in att_path:
data = content.replace(" ", ",") #replaces if the delimiter is anything other than a ",".
fp = open(att_path+".csv", 'wb')
fp.write(data)
fp.close()
这段代码会把文件写得很规范,有明确的分隔符。