· 8 years ago · Jan 17, 2018, 05:50 PM
1#coding: utf-8
2import time
3import imaplib
4import email
5import smtplib
6from win32com import client
7import csv
8from codecs import open as copen
9
10
11# ceratifation
12ORG_EMAIL = "@gmail.com"
13FROM_EMAIL = "********" + ORG_EMAIL
14FROM_PWD = "*****"
15SMTP_SERVER = "imap.gmail.com"
16SMTP_PORT = 993
17
18# connect to mail
19mail = imaplib.IMAP4_SSL(SMTP_SERVER)
20mail.login(FROM_EMAIL,FROM_PWD)
21mail.select('inbox')
22
23# manipulate the 'inbox'
24type, data = mail.search(None, 'ALL')
25mail_ids = data[0]
26id_list = mail_ids.split()
27first_email_id = int(0)
28latest_email_id = int(len(id_list))
29
30# create new file with the date as his name
31day = time.strftime("%d%m%y")
32day = day + ".csv"
33x = open(day, "w+")
34x.close()
35
36# main
37with copen(day, 'rb+', encoding="utf-8") as f:
38 fields = ['sender', 'date', 'title', 'content']
39 writer = csv.DictWriter(f, fieldnames=fields)
40 writer.writeheader()
41 for i in range(latest_email_id,first_email_id, -1):
42 typ, data = mail.fetch(i, '(RFC822)' )
43
44 for response_part in data:
45 if isinstance(response_part, tuple):
46 msg = email.message_from_string(response_part[1])
47 email_subject = msg['subject']
48 email_from = msg['from']
49 email_date = msg['date']
50 if msg.is_multipart():
51 for payload in msg.get_payload():
52 writer.writerow({'sender': str(email_from), 'date': str(email_date), 'title': email_subject, 'content': payload.get_payload()})
53 else:
54
55 writer.writerow({'sender': str(email_from), 'date': str(email_date), 'title': email_subject, 'content': msg.get_payload()})
56f.close()