首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python利用smtp来发送邮件(带附件)

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

作者头像
禹都一只猫olei
发布2018-05-25 11:31:30
8970
发布2018-05-25 11:31:30
举报

运行环境: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实现,具体方式不做多说

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

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