Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > Python网站web

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

来源:中文源码网    浏览:265 次    日期:2024-04-26 09:56:24
【下载文档:  python发送邮件接收邮件示例分享.txt 】


python发送邮件接收邮件示例分享
接收邮件
复制代码 代码如下:import poplib,pdb,email,re,timefrom 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: breakrecvEmail()
发送邮件:
复制代码 代码如下:import os,pdb,smtplib,time,mimetypesfrom email.header import Headerfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.audio import MIMEAudiofrom 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()

相关内容