python之POP詳解
這段代碼的功能:
- 解析郵件
- 下載郵件
- 掃描郵件服務器
- 查看郵件服務器是否支持APOP傳輸,對傳輸數據進行加密
- 下載郵件到本地并刪除 </ol>
#!/usr/bin/env python #-*-coding = UTF-8-*- #POP_email.py #auth@:xfk #date@:2012-04-30 ################################################################ # WARNING: This program deletes mail from the specified mailbox. # Do Not point it to any mailbox you are care about! ################################################################ import getpass import sys import poplib import email if len(sys.argv) < 4: print "[*]usage:%s server fromaddr toaddr " % sys.argv[0] sys.exit(1) (host,user,dest) = sys.argv[1:] passwd = getpass.getpass() destfd = open(dest,"at") p = poplib.POP3(host) #如果服務器支持和需要APOP認證,APOP使用加密保護密碼被竊取 try: print "Attempting APOP authentication..." print "Logging on..." p.apop(user,passwd) print "Success.\n" except poplib.error_proto: print "Attempting standard authentication..." try: print "Logging on..." p.user(user) p.pass_(passwd) print "Success.\n" except poplib.error_proto,e: print "Login fialed:",e sys.exit(1) print "*****Scanning INBOX...*****" #掃描服務器郵箱的郵件 mail_box_list = p.list()[1] print "There is %d messages.\n" % len(mail_box_list) delelist = [] #要進行刪除的又見隊列 for item in mail_box_list: number,octets = item.split(' ') #每一個元素之間有空格隔開 print "Downloading message %s (%s bytes)..." % (number,octets) lines = p.retr(number)[1] #下載郵件 msg = email.message_from_string("\n".join(lines)) #建立一個對象接受郵件內容 destfd.write(msg.as_string(unixfrom = 1)) #講郵件內容寫進目標文件 destfd.write("\n") delelist.append(number) print "Done !\n" destfd.close() counter = 0 for number in delelist: counter = counter + 1 print "Deleting message %d of %d \r" % (counter,len(delelist)) p.dele(number) #刪除郵件 if counter > 0: print "Successfully deleted %d message from server.\n" % counter else: print "No messages present to download.\n" print "Closing connection..." p.quit() #斷開連接 print "Done !\n"
本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!