當前位置:
首頁 > 知識 > python腳本實現定時發送郵件

python腳本實現定時發送郵件

[python] view plain copy

  1. # -*-encoding: utf-8 -*-
  2. """
  3. @version: 3.6
  4. @time: 2018/6/9 10:16
  5. @author: SunnyYang
  6. """
  7. import

    os,sys
  8. import

    datetime

  9. import

    smtplib
  10. import

    traceback
  11. from

    email.header

    import

    Header

  12. from

    email.utils

    import

    parseaddr,formataddr
  13. from

    email.mime.text

    import

    MIMEText
  14. from

    email.mime.multipart

    import

    MIMEMultipart
  15. from

    email.mime.base

    import

    MIMEBase
  16. from

    email

    import

    encoders

  17. # 對名字前面的中文進行處理
  18. def

    _format_addr(s):
  19. name,addr = parseaddr(s)
  20. print

    (name) #Python愛好者ii
  21. print

    (addr) #Wangxyid@163.com
  22. return

    formataddr((Header(name,"utf-8").encode(),addr))

  23. def

    send_email(to_str_in,file_path):
  24. #配置郵件的發送和接受人
  25. from_str = "Wan***@163.com" #發送郵件人的郵箱地址
  26. password = "******" #郵箱的客戶端授權碼,不是郵箱的登錄密碼
  27. smtp_server = "smtp.163.com" #163郵箱的伺服器地址
  28. to_addr = to_str_in #郵件的接收人
  29. to_addr = to_addr.split(",") #多個郵件接收人用逗號分隔
  30. #郵件發送人和接受人信息
  31. msg = MIMEMultipart()
  32. msg["From"] = _format_addr("張雪<%s>" % from_str)
  33. msg["To"] = ",".join(to_addr)
  34. msg["Subject"] = Header("hi,zhangxue","utf-8").encode()
  35. #郵件的內容和附件添加
  36. filepath = file_path
  37. r = os.path.exists(filepath)
  38. if

    r

    is

    False:
  39. msg.attach(MIMEText("No file","plain","utf-8"))
  40. else

    :
  41. msg.attach(MIMEText("send with file","plain","utf-8"))
  42. pathdir = os.listdir(filepath)
  43. for

    alldir

    in

    pathdir:
  44. child = os.path.join(filepath,alldir)
  45. print

    (alldir)
  46. print

    (child) #F:automailtest est.txt
  47. # if os.path.splitext(child)[1] == ".txt":
  48. # print(child.decode("gbk")) #解決中文顯示亂碼的問題
  49. #添加附件,就是加一個MIMEBase
  50. # mime = MIMEBase("file","txt",filename="shujutuwen")
  51. mime = MIMEBase("application", "octet-stream")

[python] view plain copy

  1. #這三行是必須要加上的,否則附件的名字就會以.bin的形式存在,而不是原來文件的名字
  2. mime.add_header("Content-Disposition", "attachment", filename=alldir) #alldir是附件的名字
  3. mime.add_header("Content-ID", "<0>")
  4. mime.add_header("X-Attachment-Id", "0")

[python] view plain copy

  1. mime.set_payload(open(child,"rb").read()) #讀取附件內容
  2. encoders.encode_base64(mime) #編碼方式
  3. msg.attach(mime)
  4. current_time = datetime.datetime.now().weekday()+1 #周一是0,周五是4
  5. if

    current_time == 5: #設置如果是周五的話就發送郵件
  6. try

    :
  7. server = smtplib.SMTP(smtp_server, 25)
  8. server.set_debuglevel(1) # 用於顯示郵件發送的執行步驟
  9. server.login(from_str, password)
  10. server.sendmail(from_str, to_addr, msg.as_string())
  11. server.quit()
  12. except

    Exception as e:
  13. print

    ("send failed")
  14. print

    (traceback.format_exc())
  15. if

    __name__ == "__main__":
  16. send_email("241921448@qq.com,256889633@qq.com", "F:\automailtest")

[python] view plain copy

  1. <span stylex="font-size:12px;"> #參考 </span><span stylex="font-size:12px;">https://www.cnblogs.com/changbo/p/5372932.html</span>

python腳本實現定時發送郵件

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

XPath 編程
ASP.NET Web Forms 編程HTML 表單

TAG:程序員小新人學習 |