Python收发邮件⽰例(imaplib,smtplib)
1 #-*- encoding: gbk -*- 2
3 import imaplib 4 import base 5 import email
6 import globle_mysql 7 import datetime
8 # from email.mime.text import MIMEText 9 # import os, sys, string10 import smtplib
11 from email.MIMEText import MIMEText12
13 mail_host=\"smtp.exmail.qq.com\" #使⽤的邮箱的smtp服务器地址,这⾥是163的smtp地址 14 mail_user=\"username@domain\" #⽤户名 15 mail_pass=\"password\" #密码 16 mail_postfix=\"domain\"
17 def send_mail(to_list,sub,content):
19 msg = MIMEText(content,'plain',\"utf-8\")20 msg['Subject'] = sub21 msg['From'] = mail_user
22 msg['To'] = \";\".join(to_list) #将收件⼈列表以‘;’分隔 23 try:
24 server = smtplib.SMTP()
25 server.connect(mail_host) #连接服务器 26 server.login(mail_user,mail_pass) #登录操作 27 server.sendmail(mail_user, to_list, msg.as_string())28 server.close()29 return True
30 except Exception, e:31 print str(e)32 return False
33 def get_first_unread_email_title_body(): 34
35 conn = imaplib.IMAP4_SSL(\"imap.exmail.qq.com\") 36 conn.login('username','password') 37 t=conn.select('INBOX') 38
39 typ, data = conn.search(None,'ALL')40 allMails=data[0].split(' ')
41 recentMails60=allMails[len(allMails)-200:]42 recentMails60.sort(reverse=True) 43 flag=0
44 for mailNum in recentMails60:45
46 typ, msg_data = conn.fetch(int(mailNum), '(RFC822)') 47
48 for response_part in msg_data:
49 if isinstance(response_part, tuple):
50 msg = email.message_from_string(response_part[1]) #获取息体 51
52 if '0.2.0' in msg[\"Subject\"] :53 flag+=1
54 subject=msg[\"Subject\"]55 msgDate=msg[\"Date\"]
56 payload=msg.get_payload()
57 content=base.decodestring(payload)58 if flag==1:
59 content1=content60 msgDate1=msgDate61 elif flag==2:
62 content2=content63 msgDate2=msgDate if flag==2:65 break66
67 print \"finished!\"68 conn.close()69 conn.logout()
70 return content1,msgDate1,content2,msgDate271
72 msgText1,mailDate1,msgText2,mailDate2=get_first_unread_email_title_body()
73 mysql=globle_mysql.MysqlDao({\"user\":\"username\",\"pwd\":\"password\",\"host\":\"ipaddr\",\"name\":\"dbname\",\"port\":3306})74 nowTime=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')75 for tablename in ('t1','t2'):
76 cids=mysql.select(\"SELECT GROUP_CONCAT(DISTINCT cid) FROM tablename WHERE create_user='monitor' AND create_time>TIMESTAMPADD(MINUTE ,-600,'%s') AND tablename='%s'\"%(nowTime,tabname))77
78 info='%s\\n'%tablename79 if cid in cids:
80 cids=cids[0][0].split(',')81 for cid in cids:
82 cid=cid.encode('gb18030')83
84 if cid in msgText1:
85 info1=datetime.datetime.strptime(mailDate1[:-6],'%a,%d %b %Y %H:%M:%S')+' '+msgText1[msgText1.find(cid):]86 info=info+info1[:info1.find('\\n')]+'\\n'87 elif cid in msgText2:
88 info1=datetime.datetime.strptime(mailDate2[:-6],'%a,%d %b %Y %H:%M:%S')+' '+msgText2[msgText2.find(cid):] info=info+info1[:info1.find('\\n')]+'\\n' 90
91 print info
92 mysql.release()93 to_list=['username']
94 send_mail(to_list, 'mailSubject', info)