Python選擇多個本地文件以附件發送到Email


Python Email 發送多個附件

起因

郵箱是最普遍的“跨平台”的信息儲存節點。應能抓取網頁、或者附件發送本地文件,以便各個終端共享信息。 
最終實現自動抓取頁面推送到郵箱;將筆記、日程以附件形式發送到郵箱。

工具和准備

  • 編輯器:Sublime 3
  • 語言:Python v2.7.11
  • OS:Windows 7 64位

網絡搜索 "Pythonemail 發送附件" 得到基礎模板。修改調試得到如下代碼:

 
 
 
         
  1. # -*- coding: utf-8 -*-
  2. # Python 2.7.11 Windows 7 64位下測試通過
  3. import smtplib,os,sys,mimetools
  4. from email.mime.text import MIMEText
  5. from email.mime.base import MIMEBase
  6. from email.mime.multipart import MIMEMultipart
  7. from email import encoders
  8. class tMail:
  9. from_mail='youremail@youremail.com'
  10. to_mail='toemail@toemail.com'
  11. msg = MIMEMultipart()
  12. def genMail(self,message,files):
  13. msg= self.msg
  14. msg['From']=self.from_mail
  15. msg['To']=self.to_mail
  16. msg['Subject']='myMail '
  17. prts = [] # 附件
  18. fnames = [] # 文件名
  19. # 遍歷附件文件
  20. for f in files:
  21. part = MIMEBase('application', 'octet-stream')
  22. try:
  23. data = f.read( )
  24. ahead = 'attachment; filename="%(basename)s"' %{'basename':os.path.basename(f.name).encode('gbk')}
  25. part.set_payload(data)
  26. encoders.encode_base64(part)
  27. part.add_header('Content-Disposition', ahead)
  28. prts.append(part)
  29. finally:
  30. f.close( )
  31. fnames.append(f.name)
  32. st = '\t'.join(fnames)
  33. # 郵件正文
  34. content=MIMEText(st.encode('gbk'),'html','gbk')
  35. msg.attach(content)
  36. # 郵件附件
  37. for z in prts:
  38. msg.attach(z)
  39. self.msg = msg
  40. def sendMail(self):
  41. server=smtplib.SMTP('smtp.youremail.com',"25")
  42. server.docmd('ehlo','youremail@youremail.com')
  43. server.login('youremail@youremail.com','yourpassword')
  44. server.sendmail(self.from_mail,self.to_mail,self.msg.as_string())
  45. server.quit()
  46. if __name__ == '__main__':
  47. # 選擇多個文件
  48. import tkFileDialog
  49. filepaths = tkFileDialog.askopenfiles(mode='rb')
  50. # 將文件以附件的形式發送到指定郵箱
  51. client = tMail()
  52. client.genMail('<h4>this is a mail</h4>',filepaths)
  53. client.sendMail()
  54. print 'Mail send complete'






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM