python_email

發(fā)送郵件問題網(wǎng)上案例很多,基本的都差不多锨天,這是我的代碼:

# coding=utf-8
__author__ = 'xcma'
import os
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application  import MIMEApplication
from LogMainClass import Log #這是我自定義的log類,如果本地沒有可以刪掉
from ReadConfig import Read_config#自定義的讀取配置文件類
from Utils import ABSpath#自定義獲取當(dāng)前執(zhí)行文件的:絕對(duì)路徑
import smtplib
log = Log("Email.py") #還是log類的命名程储,可以將log相關(guān)的全部刪掉
def send_mail(send_file_path):   
"""    
:param send_file_path: 測(cè)試報(bào)告文件路徑   
:return:    
"""    
  config_file_path = ABSpath()+"/Src/Conf/Config.ini"    
  category = "email"    
  #讀取配置文件中相關(guān)信息
  smtpserver = Read_config.return_specific_str(category, "mail_host", config_file_path)    
  smtpuser = Read_config.return_specific_str(category, "mail_user", config_file_path)    
  password = Read_config.return_specific_str(category, "mail_pass", config_file_path)    
  #拼裝接收人   --遍歷接收人配置項(xiàng)
  mailto = []    
  receive_category = "email_receiver"    
  #返回所有接收人
  receivers = Read_config.return_options(receive_category, config_file_path)    
  for i in receivers:    
    #找到每個(gè)接收人對(duì)應(yīng)的郵箱地址    
    receiver = Read_config.return_specific_str(receive_category, i, config_file_path)        
    #將每個(gè)人對(duì)應(yīng)的郵箱地址插入mailto列表中
    mailto.append(receiver)    
  msg = MIMEMultipart()    
  #定義發(fā)送人    
  msg['From'] = smtpuser   
  #定義接收郵件對(duì)象 --群發(fā)   
  msg['To'] = ",".join(mailto)    
  #郵件標(biāo)題    
  msg['Subject'] = Header('自動(dòng)化測(cè)試報(bào)告', 'utf-8').encode()    
  msg["Accept-Language"] = "zh-CN"   
  msg["Accept-Charset"] = "ISO-8859-1,utf-8"    
  content = "<h2>浴井!若想查看用例明細(xì)以政,請(qǐng)下載附件查看</h2>"    
  try:       
    sendfile = send_file_path +new_report(send_file_path)        
    file_name = new_report(send_file_path)        
    #將html中內(nèi)容貼在郵件正文中        
    fp = open(sendfile, 'rb')        
    msg.attach(MIMEText(content+fp.read(), 'html', 'utf-8'))        
    fp.close()        
    # 添加附件        
    fp = open(sendfile, 'rb')        
    part = MIMEApplication(fp.read())        
    fp.close()        
    part.add_header('Content-Disposition', 'attachment', filename=file_name)        
    msg.attach(part)        
    #發(fā)送郵件        
    server = smtplib.SMTP_SSL(smtpserver, 465)        
    server.set_debuglevel(1)
    server.login(smtpuser, password)        
    server.sendmail(smtpuser, mailto, msg.as_string())        
    server.quit()    
  except Exception as msg:       
    log.exception(u'郵件發(fā)送失敗')        
    print msg
def new_report(testreport):    
  '''    將文件按照名字時(shí)間順序排序,輸出文件名字   
       :param testreport:測(cè)試報(bào)告存放路徑    
        :return:    
  '''    
   try:       
     lists = os.listdir(testreport)        
     log.debug(u'當(dāng)前路徑中文件列表'+str(lists))        
     lists.sort(key=lambda fn: os.path.getmtime(testreport + '/' + fn))        
     file_new = os.path.join(lists[-1])        
    #返回最新生成的文件名稱       
     log.info(u'將要發(fā)送的測(cè)試報(bào)告文件:'+file_new)       
     return file_new    
   except Exception as msg:        
      print msg        
      raise
  • 雖說都差不多囱桨,但是這里認(rèn)為主要有幾個(gè)需要注意的地方:

  • 1.通過qq郵箱ssl方式發(fā)送郵件的万哪,需要將端口號(hào)修改為:465偏化,并不是默認(rèn)的

  • 2.郵件群發(fā)脐恩,必須要使用 msg['To'] = ",".join(mailto) 這種形式,mailto是列表形式

  • 3.mailto通過讀取配置文件直接讀取是不成功的侦讨,必須通過遍歷組裝才能解決(目前我的解決辦法)

  • 4.雖然可以將html文件貼在郵件中驶冒,但是在查看郵件時(shí),通常的郵箱是不支持js操作的韵卤,所以原本html支持js的(比如:樣式隱藏骗污、展示操作)在郵箱中查看只能看見默認(rèn)展開項(xiàng)(當(dāng)然可以通過修改html的方式,達(dá)到目的)

  • 5.郵箱中預(yù)覽附件會(huì)出現(xiàn)中文亂碼-目前我沒有解決方案沈条,只是盡量將中文換成英文需忿,避免問題暴露

  • 配置文件/Src/Conf/Config.ini

配置文件.png

總的來說事情坐下來不難,就是小坑比較多

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜡歹,一起剝皮案震驚了整個(gè)濱河市屋厘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌月而,老刑警劉巖汗洒,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異父款,居然都是意外死亡溢谤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門铛漓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溯香,“玉大人鲫构,你說我怎么就攤上這事浓恶。” “怎么了结笨?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵包晰,是天一觀的道長湿镀。 經(jīng)常有香客問我,道長伐憾,這世上最難降的妖魔是什么勉痴? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮树肃,結(jié)果婚禮上蒸矛,老公的妹妹穿的比我還像新娘。我一直安慰自己胸嘴,他們只是感情好雏掠,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著劣像,像睡著了一般乡话。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耳奕,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天绑青,我揣著相機(jī)與錄音,去河邊找鬼屋群。 笑死闸婴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芍躏。 我是一名探鬼主播掠拳,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼纸肉!你這毒婦竟也來了溺欧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤柏肪,失蹤者是張志新(化名)和其女友劉穎姐刁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烦味,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡聂使,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谬俄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柏靶。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖溃论,靈堂內(nèi)的尸體忽然破棺而出屎蜓,到底是詐尸還是另有隱情,我是刑警寧澤钥勋,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布炬转,位于F島的核電站辆苔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扼劈。R本人自食惡果不足惜驻啤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荐吵。 院中可真熱鬧骑冗,春花似錦、人聲如沸先煎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榨婆。三九已至磁携,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間良风,已是汗流浹背谊迄。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烟央,地道東北人统诺。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像疑俭,于是被迫代替她去往敵國和親粮呢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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

  • 簡(jiǎn)介: python專門發(fā)送email腳本钞艇,可以直接引用啄寡,命令行運(yùn)行 應(yīng)用場(chǎng)景: Linux中結(jié)合shell腳本通...
    古佛青燈度流年閱讀 336評(píng)論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)哩照,斷路器挺物,智...
    卡卡羅2017閱讀 134,714評(píng)論 18 139
  • python Email功能: 發(fā)送普通文本郵件 發(fā)送帶有html格式的郵件 發(fā)送帶有附件的郵件 發(fā)送插入圖片到正...
    CalvinKen閱讀 362評(píng)論 0 0
  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,191評(píng)論 22 257
  • 焦慮的是現(xiàn)狀飘弧,恐懼的是未來 “如果我的人生一直保持現(xiàn)狀的話识藤,會(huì)有怎樣的結(jié)果……” “這個(gè)人真的就是我的人生伴侶嗎?...
    虛度時(shí)光讀吧閱讀 401評(píng)論 0 0