pythonアナログログインqqメールボックス

2899 ワード

先日、qqメールを受け取るスクリプトを書くタスクをしました.最初は簡単だと思っていたが、後で穴がいくつかあることに気づいた.
    まずpythonを使用してqqメールボックスのシミュレーションを試みたところ、一般ユーザーはアカウントパスワードでqqメールボックスのシミュレーションを行うことができなくなったことが分かった.認証コードを使用します.(具体的にqqメールボックスのアカウントの設定を見ます) まずqqメールボックスを開いて認証コードを生成し、シミュレーションログインでこの認証コードを使用してログインします.
受信サーバ:pop.exmail.qq.com(SSL、ポート番号995を使用)
送信サーバ:
smtp.exmail.qq.com(SSL、ポート番号465を使用)
これは企業のメールボックスです.個人メールボックスの場合、サーバアドレスにはexmailがなく、個人メールボックスには認証コードが必要です.
#!/usr/bin/python
# -*- coding:utf-8 -*-

import poplib, pprint, email, sys, time, email, time, smtplib, imaplib
from datetime import datetime, timedelta, date
from email.mime.text import MIMEText  
from email.header import Header
#          UTF-8  
reload(sys)
sys.setdefaultencoding( "utf-8" )


#     SMTP                      ,       ,       exmail
mail_smtp_host= "smtp.exmail.qq.com"  		#   smtp     
mail_pop_host= "pop.exmail.qq.com"			#   pop   
mail_user= ""    		#      
mail_pass= ""  				#   ,QQ        , qq                   ,     

'''
/*DISCRIPTION
 *	Decoding charsert
 * ARGUMENTS
 * 	string need be Decodinged
 * RETURN
 * NOTES
 */
'''
def Decoding(str):
	if(str[0][1] == None): return unicode(str[0][0], 'gb18030')
	else: return unicode(str[0][0], str[0][1])
	
'''
/*DISCRIPTION
 *	Send the mail to the unsubmit
 * ARGUMENTS
 * 	string need be Decodinged
 * RETURN
 * NOTES
 */
'''
def  SendEmail():
	sender = ''  
	receivers = ['']  #     ,      QQ          
  
	message = MIMEText('a test for python', 'plain', 'utf-8')  
	message['From'] = Header("ppyy", 'utf-8')  
	message['To'] =  Header("you", 'utf-8')  
  
	subject = 'my test'  
	message['Subject'] = Header(subject, 'utf-8')  
	try:  
  		smtpObj = smtplib.SMTP_SSL(mail_smtp_host, 465)   
  		smtpObj.login(mail_user,mail_pass)    
  		smtpObj.sendmail(sender, receivers, message.as_string()) 
  		smtpObj.quit()  
  		print u"      "  
	except smtplib.SMTPException,e:  
  		print e  


def GetEmail():
	try:
		pp = poplib.POP3_SSL(mail_pop_host)
		pp.user(mail_user)
		pp.pass_(mail_pass)
		ret =pp.stat()
		print u"    "
	except:
		print "can't connect to mailserver"

	#       
	# emailMsgNum, emailSize = pp.stat()
	# for i in xrange(1, emailMsgNum+1):
	# 	ret = pp.retr(i)
	# 	mail = email.message_from_string("
".join(ret[1])) # subject = email.Header.decode_header(mail['subject']) # MailSubject = Decoding(subject) # print MailSubject ret = pp.retr(2) msg = email.message_from_string("
".join(ret[1])) print msg.get_payload() # down = pp.retr(1) # print 'lines:', len(down) # for line in down[1]: # print line pp.quit() GetEmail();