从未读邮件中下载数据到独立文件 Python

0 投票
1 回答
567 浏览
提问于 2025-04-18 15:59

我正在尝试将未读邮件中的数据下载到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()

这段代码会把文件写得很规范,有明确的分隔符。

撰写回答