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 条评论
登录 后参与评论

相关文章

来自专栏Android开发小工

你真的知道APP缓存目录的内幕吗

在使用外部存储执行任何工作之前,应始终调用 getExternalStorageState() 以检查介质是否可用。介质可能已装载到计算机,处于缺失、只读或其他...

924
来自专栏禹都一只猫博客

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

1804
来自专栏破晓之歌

python使用smtplib和MIMEText发送邮件

1.使用Python来操作邮箱:https://blog.csdn.net/qq_38059635/article/details/81569081

592
来自专栏破晓之歌

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

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

832
来自专栏运维

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

[root@localhost etc]# cat  redis_port.py

852
来自专栏老安的博客

openstack虚拟机内文件遭破坏的急救方案

    openstack虚拟机存放于ceph存储,由于用户将系统的grub误删除,导致系统无法正常引导。现在用户要求抢救文件。

691
来自专栏linux系统运维

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

1753
来自专栏Laoqi's Linux运维专列

Zabbix监控php-fpm

3625
来自专栏linux运维学习

linux学习第六十二篇:添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理

添加自定义监控项目 需求:监控某台web的80端口连接数,并出图 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现 对于第一步,需要到客...

30610
来自专栏开源优测

python selenium2示例 - email发送

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

3397

扫码关注云+社区