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