源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

python发送邮件接收邮件示例分享

  • 时间:2022-04-21 00:18 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:python发送邮件接收邮件示例分享
接收邮件
[u]复制代码[/u] 代码如下:
import poplib,pdb,email,re,time from email import header POP_ADDR = r'pop.126.com' USER = '' PASS = '' CONFIG = '' def getYear(date):     rslt = re.search(r'\b2\d{3}\b', date)     return int(rslt.group()) def getMonth(date):     monthMap = {'Jan':1,'Feb':2,'Mar':3,'Apr':4,'May':5,'Jun':6,                 'Jul':7,'Aug':8,'Sep':9,'Oct':10,'Nov':11,'Dec':12,}     rslt = re.findall(r'\b\w{3}\b', date)     for i in range(len(rslt)):         month = monthMap.get(rslt[i])         if None != month:             break     return month def getDay(date):     rslt = re.search(r'\b\d{1,2}\b', date)     return int(rslt.group()) def getTime(date):     rslt = re.search(r'\b\d{2}:\d{2}:\d{2}\b', date)     timeList = rslt.group().split(':')     for i in range(len(timeList)):         timeList[i] = int(timeList[i])     return timeList def transformDate(date):     rslt = getYear(date)     rslt = rslt * 100     rslt = rslt + getMonth(date)     rslt = rslt * 100     rslt = rslt + getDay(date)            timeList = getTime(date)     for i in range(len(timeList)):         rslt = rslt * 100         rslt = rslt + timeList[i]     print(rslt)     return rslt def getRecentReadMailTime():     fp = open(CONFIG, 'r')     rrTime = fp.read()     fp.close()     return rrTime def setRecentReadMailTime():     fp = open(CONFIG, 'w')     fp.write(time.ctime())     fp.close()     return def parseMailSubject(msg):     subSrt = msg.get('subject')     if None == subSrt:         subject = '无主题'     else:         subList = header.decode_header(subSrt)         subinfo = subList[0][0]         subcode = subList[0][1]         if isinstance(subinfo,bytes):             subject = subinfo.decode(subcode)         else:             subject = subinfo     print(subject) def parseMailContent(msg):     if msg.is_multipart():         for part in msg.get_payload():             parseMailContent(part)     else:         bMsgStr = msg.get_payload(decode=True)         charset = msg.get_param('charset')         msgStr = 'Decode Failed'         try:             if None == charset:                 msgStr = bMsgStr.decode()             else:                 msgStr = bMsgStr.decode(charset)         except:             pass         print(msgStr) def recvEmail():     server = poplib.POP3(POP_ADDR)     server.user(USER)     server.pass_(PASS)     mailCount,size = server.stat()     mailNoList = list(range(mailCount))     mailNoList.reverse()     hisTime = transformDate(getRecentReadMailTime())     setRecentReadMailTime()     #pdb.set_trace()     for i in mailNoList:         message = server.retr(i+1)[1]         mail = email.message_from_bytes(b'\n'.join(message))         if transformDate(mail.get('Date')) > hisTime:             parseMailSubject(mail)             #parseMailContent(mail)         else:             break recvEmail()
发送邮件:
[u]复制代码[/u] 代码如下:
import os,pdb,smtplib,time,mimetypes from email.header import Header from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.audio import MIMEAudio from email.mime.image import MIMEImage COMMASPACE = ',' SONG_PATH = r'' RECORD_FILE = '' PIC_PATH  = '' CC = [] TO = [] ME = '' SMTP_SERVER = 'smtp.126.com' USER = '' PASS = '' def constructAddr(addrList):     return COMMASPACE.join(addrList) def willChooseThisMedia(media, path):     fp = open(path + RECORD_FILE, 'r')     shareInfo = fp.read()     fp.close()     shareInfoList = shareInfo.split('\n')     if media not in shareInfoList:         fp = open(path + RECORD_FILE, 'a')         fp.write(media + '\n')         fp.close()         return True     else:         return False def getTodayMedia(path):     mediaList = os.listdir(path)     for media in mediaList:         if False == os.path.isfile(path + media):             continue         else:             if (media.endswith('mp3') or media.lower().endswith('jpg')) and\                 willChooseThisMedia(media, path):                 return media def getMIMEImage(pic):      fp = open(PIC_PATH + pic, 'rb')     imageType = mimetypes.guess_type(PIC_PATH + pic)     image = MIMEImage(fp.read(),imageType[0].split('/')[1])     fp.close()     image.add_header('Content-Disposition', 'attachment')     image.set_param('filename', pic, header = 'Content-Disposition', charset = 'gb2312')     return image def getMIMEAudio(song):      fp = open(SONG_PATH + song, 'rb')     audioType = mimetypes.guess_type(SONG_PATH + song)     audio = MIMEAudio(fp.read(),audioType[0].split('/')[1])     fp.close()     audio.add_header('Content-Disposition', 'attachment')     audio.set_param('filename', song, header = 'Content-Disposition', charset = 'gb2312')     return audio def constructMail():     mail = MIMEMultipart()     song = getTodayMedia(SONG_PATH)     pic  = getTodayMedia(PIC_PATH)     mailSubject = Header('今日分享 | ' + song, 'utf-8')     mailDate = Header(time.ctime())     mail['subject'] = mailSubject     mail['date'] = mailDate     mail['to'] = constructAddr(TO)     mail['cc'] = constructAddr(CC)     mail['from'] = ME     mailBody = MIMEText(song, _charset='gb2312')     mail.attach(mailBody)     mail.attach(getMIMEAudio(song))     mail.attach(getMIMEImage(pic))     return mail def sendMail():     session = smtplib.SMTP(SMTP_SERVER)     session.login(USER,PASS)     mail = constructMail()     session.sendmail(ME, constructAddr(TO), mail.as_string())     session.quit() sendMail()
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部