利用Python+163郵箱授權(quán)碼發(fā)送帶附件的郵件

背景

前段時間寫了個自動爬蟲的腳本股缸,定時在阿里云服務(wù)器上執(zhí)行,會從某個網(wǎng)站上爬取鏈接保存到txt文本中吱雏,但是腳本不夠完善敦姻,我需要爬蟲完畢之后通過郵件把附件給我發(fā)送過來,之前寫過一個《利用Python+163郵箱授權(quán)碼發(fā)送郵件》的博客歧杏,但是那篇文章是沒有帶附件的镰惦,因此,我想到了爬蟲完畢之后得滤,再執(zhí)行一段發(fā)送郵件的代碼陨献,把爬蟲保存的TXT文件通過郵件發(fā)送到我的郵箱中,需求開始明確了懂更,就開始分析和寫代碼實現(xiàn)吧眨业。

分析

SMTP(Simple Mail Transfer Protocol)急膀,即簡單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則龄捡,由它來控制信件的中轉(zhuǎn)方式卓嫂。
python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對smtp協(xié)議進(jìn)行了簡單的封裝聘殖。

看到阿里云服務(wù)上的定時任務(wù)如下:

爬蟲執(zhí)行完畢獲取到TXT文件命名如下晨雳,前面xfurlwett-是固定的,后面是日期奸腺,".txt"是固定的后綴

在python中用以下兩行代碼格式化時間餐禁,格式化之后把它轉(zhuǎn)為字符串賦給一個變量caodate

ISOTIMEFORMAT='%Y%m%d'
caodate=str(time.strftime(ISOTIMEFORMAT, time.localtime()))

文件名如下,可在字符串xfurlwett前面加上絕對路徑的文件名

filename='xfurlwett-'+caodate+'.txt'

發(fā)送帶附件的郵件,首先要創(chuàng)建MIMEMultipart()實例突照,然后構(gòu)造附件帮非,如果有多個附件,可依次構(gòu)造讹蘑,最后利用smtplib.smtp發(fā)送末盔。

message = MIMEMultipart() 
message['subject'] = caodate+'下載附件通知' 
# 設(shè)置郵件標(biāo)題
message['from'] = sender  
# 設(shè)置發(fā)送人
message['to'] = receiver0  
# 設(shè)置接收人 
message.attach(msg)
filename='xfurlwett-'+caodate+'.txt'
# 構(gòu)造附件1,傳送當(dāng)前目錄下的 filename 文件
att1 = MIMEText(open(filename, 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 這里的filename可以任意寫座慰,寫什么名字陨舱,郵件中顯示什么名字
att1["Content-Disposition"] = 'attachment; filename="'+filename+'"'
message.attach(att1)

代碼實現(xiàn)

import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
ISOTIMEFORMAT='%Y%m%d'
def sentemail():
    caodate=str(time.strftime(ISOTIMEFORMAT, time.localtime()))
    host = 'smtp.163.com'  
    # 設(shè)置發(fā)件服務(wù)器地址
    port = 465  
    # 設(shè)置發(fā)件服務(wù)器端口號。注意版仔,這里有SSL和非SSL兩種形式
    sender = 'a419914150@163.com'  
    # 設(shè)置發(fā)件郵箱游盲,一定要自己注冊的郵箱
    pwd = 'ifujfnjdfnhkgnjfd'  
    # 設(shè)置發(fā)件郵箱的密碼,163郵箱的授權(quán)碼蛮粮,等會登陸會用到
    receiver0 = '419914150@qq.com' 
    # 設(shè)置郵件接收人背桐,可以是扣扣郵箱
    receiver1 = '1879230382@qq.com'
    body = '<h1>'+caodate+'</h1><p>zhongfs</p>' 
    # 設(shè)置郵件正文,這里是支持HTML的
    msg = MIMEText(body, 'html') 
    # 設(shè)置正文為符合郵件格式的HTML內(nèi)容
    message = MIMEMultipart() 
    message['subject'] = caodate+'下載附件通知' 
    # 設(shè)置郵件標(biāo)題
    message['from'] = sender  
    # 設(shè)置發(fā)送人
    message['to'] = receiver0  
    # 設(shè)置接收人 
    message.attach(msg)
    filename='xfurlwett-'+caodate+'.txt'
    # 構(gòu)造附件1蝉揍,傳送當(dāng)前目錄下的 filename 文件
    att1 = MIMEText(open(filename, 'rb').read(), 'base64', 'utf-8')
    att1["Content-Type"] = 'application/octet-stream'
    # 這里的filename可以任意寫链峭,寫什么名字,郵件中顯示什么名字
    att1["Content-Disposition"] = 'attachment; filename="'+filename+'"'
    message.attach(att1)
    try:
        s = smtplib.SMTP_SSL(host, port)  # 注意又沾!如果是使用SSL端口弊仪,這里就要改為SMTP_SSL
        s.login(sender, pwd)  # 登陸郵箱
        s.sendmail(sender, receiver0, message.as_string())# 發(fā)送郵件!
        #s.sendmail(sender, receiver1, msg.as_string())
        print ('Done.sent email success')
    except smtplib.SMTPException:
        print ('Error.sent email fail')
if __name__ == '__main__':
    sentemail()

執(zhí)行情況

程序運行截圖:

收到郵件截圖:

總結(jié)

本文簡單介紹了如何利用python通過163郵箱發(fā)送帶附件的郵件杖刷,并附上了代碼励饵。由于比較簡單,不再過多闡述滑燃。已上傳github代碼役听,鏈接如下:

https://github.com/rootzhongfengshan/python_practical/blob/master/SentMail/SentMailWithAttachment.py

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子典予,更是在濱河造成了極大的恐慌甜滨,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘤袖,死亡現(xiàn)場離奇詭異衣摩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)捂敌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門艾扮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人占婉,你說我怎么就攤上這事泡嘴。” “怎么了逆济?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵磕诊,是天一觀的道長。 經(jīng)常有香客問我纹腌,道長,這世上最難降的妖魔是什么滞磺? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任升薯,我火速辦了婚禮,結(jié)果婚禮上击困,老公的妹妹穿的比我還像新娘涎劈。我一直安慰自己,他們只是感情好阅茶,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布蛛枚。 她就那樣靜靜地躺著,像睡著了一般脸哀。 火紅的嫁衣襯著肌膚如雪蹦浦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天撞蜂,我揣著相機(jī)與錄音盲镶,去河邊找鬼。 笑死蝌诡,一個胖子當(dāng)著我的面吹牛溉贿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播浦旱,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宇色,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宣蠕,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤例隆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后植影,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裳擎,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年思币,在試婚紗的時候發(fā)現(xiàn)自己被綠了鹿响。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡谷饿,死狀恐怖惶我,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情博投,我是刑警寧澤绸贡,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站毅哗,受9級特大地震影響听怕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜虑绵,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一尿瞭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧翅睛,春花似錦声搁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扎酷,卻和暖如春檐涝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背法挨。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工骤铃, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坷剧。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓惰爬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惫企。 傳聞我的和親對象是個殘疾皇子撕瞧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容