手机
当前位置:查字典教程网 >脚本专栏 >python >python发送邮件接收邮件示例分享
python发送邮件接收邮件示例分享
摘要:接收邮件复制代码代码如下:importpoplib,pdb,email,re,timefromemailimportheaderPOP_AD...

接收邮件

复制代码 代码如下:

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'b2d{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'bw{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'bd{1,2}b', date)

return int(rslt.group())

def getTime(date):

rslt = re.search(r'bd{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()

发送邮件:

复制代码 代码如下:

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()

【python发送邮件接收邮件示例分享】相关文章:

二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)

python查找第k小元素代码分享

python算法学习之桶排序算法实例(分块排序)

python 提取文件的小程序

python单链表实现代码实例

python实现人人网登录示例分享

python将xml xsl文件生成html文件存储示例讲解

python发送arp欺骗攻击代码分析

python计算最小优先级队列代码分享

Python的一些用法分享

精品推荐
分类导航