亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python發(fā)送郵件接收郵件示例分享

 更新時(shí)間:2014年01月21日 09:17:36   作者:  
這篇文章主要介紹了python發(fā)送郵件接收郵件示例,大家參考使用吧

接收郵件

復(fù)制代碼 代碼如下:

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

發(fā)送郵件:

復(fù)制代碼 代碼如下:

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

相關(guān)文章

  • python生成多個(gè)只含0,1元素的隨機(jī)數(shù)組或列表的實(shí)例

    python生成多個(gè)只含0,1元素的隨機(jī)數(shù)組或列表的實(shí)例

    今天小編就為大家分享一篇python生成多個(gè)只含0,1元素的隨機(jī)數(shù)組或列表的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 使用python 爬蟲抓站的一些技巧總結(jié)

    使用python 爬蟲抓站的一些技巧總結(jié)

    這篇文章主要介紹了用 python 爬蟲抓站的一些技巧總結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Pycharm配置autopep8實(shí)現(xiàn)流程解析

    Pycharm配置autopep8實(shí)現(xiàn)流程解析

    這篇文章主要介紹了Pycharm配置autopep8實(shí)現(xiàn)流程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • YOLOv5部署到web端詳細(xì)過程(flask+js簡單易懂)

    YOLOv5部署到web端詳細(xì)過程(flask+js簡單易懂)

    YOLOv5是一個(gè)目標(biāo)檢測模型,Flask是一個(gè)Python的Web框架,下面這篇文章主要給大家介紹了關(guān)于YOLOv5部署到web端(flask+js簡單易懂)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Python實(shí)現(xiàn)合并同一個(gè)文件夾下所有txt文件的方法示例

    Python實(shí)現(xiàn)合并同一個(gè)文件夾下所有txt文件的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)合并同一個(gè)文件夾下所有txt文件的方法,涉及Python針對(duì)文件的遍歷、讀取、寫入等相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • Python的subprocess模塊總結(jié)

    Python的subprocess模塊總結(jié)

    這篇文章主要介紹了Python的subprocess模塊總結(jié),本文詳細(xì)講解了subprocess模塊參數(shù)及Popen方法,然后給出了多個(gè)使用實(shí)例,需要的朋友可以參考下
    2014-11-11
  • Python交互式圖形編程的實(shí)現(xiàn)

    Python交互式圖形編程的實(shí)現(xiàn)

    這篇文章主要介紹了Python交互式圖形編程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 對(duì)python中基于tcp協(xié)議的通信(數(shù)據(jù)傳輸)實(shí)例講解

    對(duì)python中基于tcp協(xié)議的通信(數(shù)據(jù)傳輸)實(shí)例講解

    今天小編就為大家分享一篇對(duì)python中基于tcp協(xié)議的通信(數(shù)據(jù)傳輸)實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • pycharm必知的一些簡單設(shè)置方法

    pycharm必知的一些簡單設(shè)置方法

    這篇文章主要介紹了pycharm必知的一些簡單設(shè)置方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • python實(shí)現(xiàn)接口并發(fā)測試腳本

    python實(shí)現(xiàn)接口并發(fā)測試腳本

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)接口并發(fā)測試腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評(píng)論