1. #!/usr/bin/python
  2. # encoding=utf-8
  3. # Filename: send_email.py
  4. from email.mime.image import MIMEImage
  5. from email.mime.multipart import MIMEMultipart
  6. from email.mime.text import MIMEText
  7. import smtplib
  8.  
  9. class SendEmail:
  10. # 构造函数:初始化基本信息
  11. def __init__(self, host, user, passwd):
  12. lInfo = user.split("@")
  13. self._user = user
  14. self._account = lInfo[0]
  15. self._me = self._account + "<" + self._user + ">"
  16.  
  17. server = smtplib.SMTP()
  18. server.connect(host)
  19. server.login(self._account, passwd)
  20. self._server = server
  21.  
  22. # 发送文件或html邮件
  23. def sendTxtMail(self, to_list, sub, content, subtype='html'):
  24. # 如果发送的是文本邮件,则_subtype设置为plain
  25. # 如果发送的是html邮件,则_subtype设置为html
  26. msg = MIMEText(content, _subtype=subtype, _charset='utf-8')
  27. msg['Subject'] = sub
  28. msg['From'] = self._me
  29. msg['To'] = ";".join(to_list)
  30. try:
  31. self._server.sendmail(self._me, to_list, msg.as_string())
  32. return True
  33. except Exception, e:
  34. print str(e)
  35. return False
  36.  
  37. # 发送带附件的文件或html邮件
  38. def sendAttachMail(self, to_list, sub, content, subtype='html'):
  39. # 创建一个带附件的实例
  40. msg = MIMEMultipart()
  41. # 增加附件1
  42. att1 = MIMEText(open(r'D:\javawork\PyTest\src\main.py','rb').read(), 'base64', 'utf-8')
  43. att1["Content-Type"] = 'application/octet-stream'
  44. # 这里的filename可以任意写,写什么名字,邮件中显示什么名字
  45. att1["Content-Disposition"] = 'attachment; filename="main.py"'
  46. msg.attach(att1)
  47.  
  48. # 增加附件2
  49. att2 = MIMEText(open(r'D:\javawork\PyTest\src\main.py','rb').read(), 'base64', 'utf-8')
  50. att2["Content-Type"] = 'application/octet-stream'
  51. att2["Content-Disposition"] = 'attachment; filename="main.txt"'
  52. msg.attach(att2)
  53.  
  54. # 增加邮件内容
  55. msg.attach(MIMEText(content, _subtype=subtype, _charset='utf-8'))
  56.  
  57. msg['Subject'] = sub
  58. msg['From'] = self._me
  59. msg['To'] = ";".join(to_list)
  60.  
  61. try:
  62. self._server.sendmail(self._me, to_list, msg.as_string())
  63. return True
  64. except Exception, e:
  65. print str(e)
  66. return False
  67. # 发送带附件的文件或html邮件
  68. def sendImageMail(self, to_list, sub, content, subtype='html'):
  69. # 创建一个带附件的实例
  70. msg = MIMEMultipart()
  71.  
  72. # 增加邮件内容
  73. msg.attach(MIMEText(content, _subtype=subtype, _charset='utf-8'))
  74.  
  75. # 增加图片附件
  76. image = MIMEImage(open(r'D:\javawork\PyTest\src\test.jpg','rb').read())
  77. #附件列表中显示的文件名
  78. image.add_header('Content-Disposition', 'attachment;filename=p.jpg')
  79. msg.attach(image)
  80.  
  81. msg['Subject'] = sub
  82. msg['From'] = self._me
  83. msg['To'] = ";".join(to_list)
  84.  
  85. try:
  86. self._server.sendmail(self._me, to_list, msg.as_string())
  87. return True
  88. except Exception, e:
  89. print str(e)
  90. return False
  91.  
  92. # 析构函数:释放资源
  93. def __del__(self):
  94. self._server.quit()
  95. self._server.close()
  96.  
  97. mailto_list = ['xxx@163.com']
  98. mail = SendEmail('smtp.163.com', 'xxx@163.com', 'xxxxxx')
  99. if mail.sendTxtMail(mailto_list, "测试邮件", "hello world!<br><br><h1>你好,发送文本文件测试<h1>"):
  100. print "发送成功"
  101. else:
  102. print "发送失败"
  103.  
  104. if mail.sendAttachMail(mailto_list, "测试邮件-带两个附件", "hello world!<br><br><h1>你好,发送文本文件测试<h1>"):
  105. print "发送成功"
  106. else:
  107. print "发送失败"
  108.  
  109. if mail.sendImageMail(mailto_list, "测试邮件-带一个图片的附件", "hello world!<br><br><h1>你好,发送文本文件测试<h1>"):
  110. print "发送成功"
  111. else:
  112. print "发送失败"

http://www.open-open.com/lib/view/open1392606528163.html

python 发邮件-带附件-文本-html的更多相关文章

  1. Java发邮件带附件测试通过

    package cn.bric.crm.util; import java.util.Date; import java.util.Enumeration; import java.util.Prop ...

  2. kettle 发邮件带附件

    新建一个job,主要用到的组件有两个,如下图: 首先点击下图的文件,选择你要做为邮件附件的文件.选完后会在前辈的文件.目录中显示.然后点击增加,会下面文件列表中显示已经添加的文件(涂黄色的部分) 按下 ...

  3. Java发邮件带附件(且重命名附件)

    环境:spring3.2.2+jquery 用户的附件管理要实现发送附件可以是单个也可以是多个.由于用户在上传附件的时候采用了重命名机制,所以存在服务器上的文件是重命名后的文件,如果用户要将文件以邮件 ...

  4. 如何用python发邮件

    python发送各类邮件的主要方法 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:     1.smtplib模块 smtplib.SM ...

  5. Python 发邮件例子

    Python 发邮件例子 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-04-23 16:12:33 # @Autho ...

  6. python发邮件遇到的端口号问题

    在学习使用python发邮件的过程中, 遇到了一个问题:由于测试的时候使用的是QQ邮箱,要求必须使用SSL/TLS加密,所以有了下面的代码, from email.mime.text import M ...

  7. 使用python发邮件

    使用python发邮件 网上有很多发邮件的例子,本人在网上找了一份,稍加修改后使用 上源码 # encoding=utf-8 from email.mime.image import MIMEImag ...

  8. python smtp 发邮件 添加附件

    # -*- coding:utf-8 -*- # __author__ = 'justing' import os import smtplib from email.mime.multipart i ...

  9. python 发送email邮件带附件

    EMAIL功能实现: 1.发送EMAIL带附件,并且带压缩文件夹做为附件 #_*_coding:utf-8_*_ import smtplib from email.mime.text import ...

随机推荐

  1. js 布尔值作为开关判断

    var flag = true; $("#more_info").click(function() { if( flag ){ $("#more_xl_more" ...

  2. iOS学习之设计模式

    iOS开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~ (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现. 优势:解耦合 敏捷 ...

  3. android自定义按键

    android自带菜单键.返回键.搜索键的重写 转自:http://blog.sina.com.cn/s/blog_7cb9b3b801015yk8.html   返回键 public void on ...

  4. oracle length and lengthb

    LENGTH──返回以字符为单位的字符串长度. LENGTHB──返回以字节为单位的字符串长度,它和类型定义中的长度是一个概念,比如你定义的varchar2(10)中的10.在不同的数据库,因为字符集 ...

  5. vld使用

    1.下载VLD官方版本 2.安装 3.在vs里面的属性里->c/c++->常规->副含附加目录  C:\Program Files (x86)\Visual Leak Detecto ...

  6. 2014西安现场赛F题 UVALA 7040

    地址 题意:求在m种颜色中挑选k种颜色,给n个花朵涂色有几种方法. 分析:画图可以发现,基本的公式就是k ×(k-1)^(n-1).但这仅保证了相邻颜色不同,总颜色数不超过k种,并没有保证恰好出现k种 ...

  7. C# 属性和字段的区别

    属性和字段的区别 在C#中,我们可以非常自由的.毫无限制的访问公有字段, 但在一些场合中,我们可能希望限制只能给字段赋于某个范围的值.或是要求字段只能读或只能写, 或是在改变字段时能改变对象的其他一些 ...

  8. C#使用QQ邮箱发送邮件

    首先要开通QQ邮箱的STMP服务.QQ邮箱——设置——账户——开启SMTP服务. 需要引用: using System.Net; using System.Net.Mail; using System ...

  9. UIView---汇总

    视图.绘图.贴图.手势.变形.布局.动画.动力.特效 UIBezierPath.UIGestureRecognizer.CGAffineTransform.frame.bounds.center.tr ...

  10. capwap DTSL 加密分析

    1.概述 DTLS即Datagram Transport Layer Security (RFC4347),AP加入AC前,先进行DTLS验证,当AP与AC之间的DTLS握手成功后,AP发出Join请 ...