def retrive_emails(pop3_server, user_name, passwd, server_port):
#POP3
pop_client = poplib.POP3(pop3_server, port=server_port)
pop_client.user(user_name)
pop_client.pass_(passwd)
#print messages num
num_messages, mbox_size = pop_client.stat()
print 'there are %s new emails/n' % num_messages
if num_messages == 0:
pop_client.quit()
return
print('num of messages %s' %str(num_messages))
#mk folder
folder_name = '%s-%s' %(user_name, pop3_server)
if not os.path.exists(folder_name):
os.mkdir(folder_name)
for idx in range(num_messages):
one_mail = pop_client.retr(idx+1)
buf = cStringIO.StringIO()
for j in one_mail[1]:
print >>buf,j
buf.seek(0)
#parse mail content
msg = email.message_from_file(buf)
for part in msg.walk():
contenttype = part.get_content_type()
print('/npart:/n%s/n' % part)
filename = part.get_filename()
print('contenttype : %s' % contenttype)
if filename and (contenttype == 'application/octet-stream'):
# save mail
f = open("%s/mail%d.%s.attach"
%(folder_name, idx+1, filename), 'wb')
f.write(base64.decodestring(part.get_payload()))
f.close()
elif contenttype == 'text/plain':
# save content
f = open("%s/mail%d.txt" %(folder_name, idx+1),'wb')
f.write(base64.decodestring(part.get_payload()))
f.close()
#elif contenttype == 'text/html':
# # save content
# f = open("%s/mail%d.html" %(folder_name, idx+1),'wb')
# f.write(base64.decodestring(part.get_payload()))
# f.close()
print('===========================================')
buf.close()
if idx == 10:
break
pop_client.quit()