前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python利用smtp来发送邮件(带附件)

python利用smtp来发送邮件(带附件)

作者头像
V站CEO-西顾
发布2018-06-17 12:10:02
1.2K0
发布2018-06-17 12:10:02
举报
文章被收录于专栏:V站V站

V站笔记

运行环境:python2.7python3.x的话,把代码中的中文的字符前的u去掉就好,这是2与3基本的区别

  1. #?-*-?coding:?utf-8?-*-
  2. import smtplib
  3. import email.MIMEMultipart??#?import?MIMEMultipart
  4. import email.MIMEText??#?import?MIMEText
  5. import email.MIMEBase??#?import?MIMEBase
  6. import os.path
  7. import mimetypes
  8. import datetime
  9. import os
  10. from email.header?import?Header
  11. #?today?=?datetime.date.today()
  12. #?yesterday?=?today?-?datetime.timedelta(days=1)
  13. From?=?"%s?<*****>"?%?Header("xxx","utf-8")?#?发送邮箱,*****是发送来源的邮箱,xxx是发送邮件时候的标题,
  14. To?=?"?###"??#?接受邮件的邮箱
  15. file_name?=?"***"???#?附件名(带路径)
  16. server?=?smtplib.SMTP_SSL("smtp.exmail.qq.com",?465)
  17. server.login("*****",?"password?or?授权码")??#?仅smtp服务器需要验证时
  18. #?构造MIMEMultipart对象做为根容器
  19. main_msg?=?email.MIMEMultipart.MIMEMultipart()
  20. #?构造MIMEText对象做为邮件显示内容并附加到根容器
  21. important?=?"""
  22. 这里面写内容
  23. """
  24. text_msg?=?email.MIMEText.MIMEText("这是内容的标题"?+?'\n'?+?important,?_charset="utf-8")
  25. text_msg["Accept-Language"]?=?"zh-CN"
  26. text_msg["Accept-Charset"]="ISO-8859-1,utf-8"
  27. main_msg.attach(text_msg)
  28. #?设置有中文的字符串,在微软的outlook中乱码,所以才有了上面对中文的设置
  29. #?构造MIMEBase对象做为文件附件内容并附加到根容器
  30. ##?读入文件内容并格式化?[方式1]------------------------------
  31. data?=?open(file_name,?'rb')
  32. ctype,?encoding?=?mimetypes.guess_type(file_name)
  33. if?ctype?is?None?or?encoding?is not?None:
  34. ????ctype?=?'application/octet-stream'
  35. maintype,?subtype?=?ctype.split('/',?1)
  36. file_msg?=?email.MIMEBase.MIMEBase(maintype,?subtype)
  37. file_msg.set_payload(data.read())
  38. data.close()
  39. email.Encoders.encode_base64(file_msg)??#?把附件编码
  40. ##?设置附件头
  41. basename?=?os.path.basename(file_name)
  42. file_msg.add_header('Content-Disposition',?'attachment',?filename=basename)??#?修改邮件头
  43. main_msg.attach(file_msg)
  44. #?设置根容器属性
  45. subject?=?u"?邮件标题"
  46. if not isinstance(subject,unicode):
  47. ????subject?=?unicode(subject)
  48. main_msg['From']?=?From
  49. main_msg['To']?=?To
  50. main_msg['Subject']?=?subject
  51. main_msg['Date']?=?email.Utils.formatdate()
  52. #?得到格式化后的完整文本
  53. fullText?=?main_msg.as_string()
  54. #?print('发送成功')
  55. #?用smtp发送邮件
  56. try:
  57. ????server.sendmail(From,?To,?fullText)
  58. finally:
  59. ????server.quit()

温馨提示

如果想要做个定时的话,可以借助cronjob实现,具体方式不做多说

本文系转载,前往查看

如有侵权,请联系?cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系?cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com