1. 使用 poplib 组件
# -*- coding: utf-8 -*-
import poplib
from email import parser
host = 'pop.163.com'
username = 'mine@163.com'
password = '*******'
pop_conn = poplib.POP3_SSL(host)
pop_conn.user(username)
pop_conn.pass_(password)
#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
messages = ["\n".join(mssg[1]) for mssg in messages]
#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
print message['Subject']
pop_conn.quit()
此方法会输出收件箱所有内容。
2. 使用 imaplib 组件,检测邮件并返回未读邮件的数值
# -*- coding: utf-8 -*-
import imaplib,re
host = 'imap.163.com'
username = 'mine@163.com'
password = '*******'
def email_checker(username,password):
i=imaplib.IMAP4_SSL('imap.163.com')
try:
i.login(username,password)
x,y=i.status('INBOX','(MESSAGES UNSEEN)')
messages=int(re.search('MESSAGES\s+(\d+)',y[0]).group(1))
unseen=int(re.search('UNSEEN\s+(\d+)',y[0]).group(1))
return (messages,unseen)
except:
return False,0
# Use in your scripts as follows:
messages,unseen = email_checker('mine@163.com','******')
print "%i messages, %i unseen" % (messages,unseen)
3. 使用 imaplib 组件,对未读邮件内容整理,返回主题和内容
# -*- coding: utf-8 -*-
import imaplib
import email
def extract_body(payload):
if isinstance(payload,str):
return payload
else:
return '\n'.join([extract_body(part.get_payload()) for part in payload])
conn = imaplib.IMAP4_SSL("imap.163.com", 993)
conn.login("mine@163.com", "******")
conn.select()
typ, data = conn.search(None, 'UNSEEN')
try:
for num in data[0].split():
typ, msg_data = conn.fetch(num, '(RFC822)')
for response_part in msg_data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1])
subject=msg['subject']
print(subject)
payload=msg.get_payload()
body=extract_body(payload)
print(body)
typ, response = conn.store(num, '+FLAGS', r'(\Seen)')
finally:
try:
conn.close()
except:
pass
conn.logout()