刀刀网
您的当前位置:首页Python收发邮件示例(imaplib,smtplib)

Python收发邮件示例(imaplib,smtplib)

来源:刀刀网
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)

因篇幅问题不能全部显示,请点此查看更多更全内容