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

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实现,具体方式不做多说

原文链接:https://24bp.cn

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏禹都一只猫博客

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

2084
来自专栏linux系统运维

原 添加自定义监控项目,配置邮件告警,测

1913
来自专栏互扯程序

Linux常用Shell脚本,值得学习及收藏

在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个linux运维必须学会的一门功课,这里收藏linux运...

1021
来自专栏破晓之歌

python+mysql上传图片和上传文件 转

参考博客:http://www.cognize.me/2016/05/09/djangopic

1472
来自专栏禅林阆苑

利用NextCloud配置私有云 【原创】

利用NextCloud配置私有云 Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github...

1.6K8
来自专栏Android相关

X86与Arm的差异

ARM指令只能处理寄存器内的数据,内存数据只能通过load/store访问存储器,将内存的数据读取到寄存器,经过指令处理后,再将数据存储到内存中

831
来自专栏从零开始学自动化测试

python笔记3-发送邮件(smtplib)

前言 本篇总结了QQ邮箱和163邮箱发送邮件,邮件包含html中文和附件,可以发给多个收件人,专治各种不行,总之看完这篇麻麻再也不用担心我的邮件收不到了。 以下...

3155
来自专栏运维

zabbix监控之redis自动发现并监控

[root@localhost etc]# cat  redis_port.py

1622
来自专栏用户3030674的专栏

Android文件各种存储路径的比较

应用内部存储空间(数据文件私有)文件存储到这个路径下,不需要申请权限,当应用被卸载的时候,目录下的文件会被删除。 需要注意的是,这个文件的目录和应用的存储位...

1931
来自专栏开源优测

python selenium2示例 - email发送

前言 在进行日常的自动化测试实践中,我们总是需要将测试过程中的记录、结果等等等相关信息通过自动的手段发送给相关人员。python的smtplib、email模块...

3447

扫码关注云+社区