#http://docs.python.org/library/poplib.html
import poplib
emailServer = poplib.POP3('pop3.139.com')
emailServer.user('xxxxxx')
emailServer.pass_('xxxxxx')
#打印欢迎信息
serverWelcome = emailServer.getwelcome()
print serverWelcome
#保持连接
emailServer.noop()
#邮件的数量和大小
emailMsgNum, emailSize = emailServer.stat()
print 'email number is %d and size is %d'%(emailMsgNum, emailSize)
emailServer.retr(1)
emailServer.list(1)
for i in range(emailMsgNum):
for piece in emailServer.retr(i+1)[1]:
if piece.startswith('Subject'):
print '\t' + piece
break
>>> import socket
>>> socket.setdefaulttimeout(10) # 10秒
-- imap4
http://docs.python.org/library/imaplib.html
#!/usr/bin/python
# -*- coding: latin-1 -*-
import imaplib
import time
import email
import re
mailServer = "imap.139.com"
mailUser = "xxxxx"
mailPassWord = "xxxxx"
fromAddress = ['x@139.com','x@139.com','x@139.com',]
toAddress = 'xxx'
fileHandle = open( '/home/xwzhou/mailLog.log', 'a' )
#multiple payloads (plaintext/ html), you must parse each message separately.
def get_first_text_block(email_message_instance):
maintype = email_message_instance.get_content_maintype()
if maintype == 'multipart':
for part in email_message_instance.get_payload():
if part.get_content_maintype() == 'text':
return part.get_payload()
elif maintype == 'text':
return email_message_instance.get_payload()
# connect to server
# login
while 1:
imapServer = imaplib.IMAP4(mailServer)
imapServer.login(mailUser, mailPassWord)
imapServer.select()
# list items on server
#resp, items = server.search(None, "ALL") #all Message.
mailResp, mailItems = imapServer.search(None, "Recent") #Message has not been read.
#resp, items = server.search(None, "Seen") #Message has been read.
#resp, items = server.search(None, "Answered") #Message has been answered.
#resp, items = server.search(None, "Flagged") #Message is "flagged" for urgent/special attention.
#resp, items = server.search(None, "Deleted") ##python无法看到已删除邮件
#resp, items = server.search(None, "Draft") ##python无法看到草稿箱内的邮件
for i in mailItems[0].split():
resp, mailData = imapServer.fetch(i, "(RFC822)") ##读取邮件信息
mailText = mailData[0][1]
mail_message = email.message_from_string(mailText)
#showmessage(mail_message)
mailContent = get_first_text_block(mail_message).strip()
nowTime=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
if re.search('starWar', mail_message['subject']) and mail_message['from'] in fromAddress and mail_message['to'] in toAddress:
fileHandle.write('['+nowTime+'] '+ 'FROM:'+mail_message['from']+ ' To:'+mail_message['to']+' Subject:'+mail_message['subject']+' Content:'+mailContent+'\n')
fileHandle.flush()
print nowTime+mailContent
else:
print nowTime+'No match\n'
imapServer.close()
imapServer.logout()
time.sleep(0)
"""
mailFile = StringIO.StringIO(mailText)
mailMessage = rfc822.Message(mailFile)
print message['from']
newMail = dict(mailMessage.items())
mailMessage.fp.read()
#server.store(items[i], '+FLAGS', '\\Deleted')##删除指定的一份邮件
"""