今天给大伙说说python发送邮件,官方的多余的话自己去百度好了,还有一大堆文档说实话不到万不得已的时候一般人都不会去看,回归主题:

本人是mac如果没有按照依赖模块的请按照下面的截图安装

导入模块如果没有错误,表示已经安装成功。

Python发送一个未知MIME类型的文件附件其基本思路如下:
1. 构造MIMEMultipart对象做为根容器
2. 构造MIMEText对象做为邮件显示内容并附加到根容器
3. 构造MIMEBase对象做为文件附件内容并附加到根容器
  a. 读入文件内容并格式化
  b. 设置附件头
4. 设置根容器属性
5. 得到格式化后的完整文本
6. 用smtp发送邮件

实例代码:

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
  4. import smtplib
  5. from email.mime.multipart import MIMEMultipart
  6. from email.mime.text import MIMEText
  7. from email.mime.application import MIMEApplication
  8.  
  9. class Mailer(object):
  10. def __init__(self,maillist,mailtitle,mailcontent):
  11. self.mail_list = maillist
  12. self.mail_title = mailtitle
  13. self.mail_content = mailcontent
  14.  
  15. self.mail_host = "smtp.163.com"
  16. self.mail_user = "your email name"
  17. self.mail_pass = "your email password"
  18. self.mail_postfix = "163.com"
  19.  
  20. def sendMail(self):
  21.  
  22. me = self.mail_user + "<" + self.mail_user + "@" + self.mail_postfix + ">"
  23. msg = MIMEMultipart()
  24. msg['Subject'] = 'Python mail Test'
  25. msg['From'] = me
  26. msg['To'] = ";".join(self.mail_list)
  27.  
  28. #puretext = MIMEText('<h1>你好,<br/>'+self.mail_content+'</h1>','html','utf-8')
  29. puretext = MIMEText('纯文本内容'+self.mail_content)
  30. msg.attach(puretext)
  31.  
  32. # jpg类型的附件
  33. jpgpart = MIMEApplication(open('/home/mypan/1949777163775279642.jpg', 'rb').read())
  34. jpgpart.add_header('Content-Disposition', 'attachment', filename='beauty.jpg')
  35. msg.attach(jpgpart)
  36.  
  37. # 首先是xlsx类型的附件
  38. #xlsxpart = MIMEApplication(open('test.xlsx', 'rb').read())
  39. #xlsxpart.add_header('Content-Disposition', 'attachment', filename='test.xlsx')
  40. #msg.attach(xlsxpart)
  41.  
  42. # mp3类型的附件
  43. #mp3part = MIMEApplication(open('kenny.mp3', 'rb').read())
  44. #mp3part.add_header('Content-Disposition', 'attachment', filename='benny.mp3')
  45. #msg.attach(mp3part)
  46.  
  47. # pdf类型附件
  48. #part = MIMEApplication(open('foo.pdf', 'rb').read())
  49. #part.add_header('Content-Disposition', 'attachment', filename="foo.pdf")
  50. #msg.attach(part)
  51.  
  52. try:
  53. s = smtplib.SMTP() #创建邮件服务器对象
  54. s.connect(self.mail_host) #连接到指定的smtp服务器。参数分别表示smpt主机和端口
  55. s.login(self.mail_user, self.mail_pass) #登录到你邮箱
  56. s.sendmail(me, self.mail_list, msg.as_string()) #发送内容
  57. s.close()
  58. return True
  59. except Exception, e:
  60. print str(e)
  61. return False
  62.  
  63. if __name__ == '__main__':
  64. #send list
  65. mailto_list = ["aaa@lsh123.com","bbb@163.com"]
  66. mail_title = 'Hey subject'
  67. mail_content = 'Hey this is content'
  68. mm = Mailer(mailto_list,mail_title,mail_content)
  69. res = mm.sendMail()
  70. print res

python发送邮件及附件的更多相关文章

  1. python 发送邮件 带附件

    # coding:utf-8 # __author__ = 'Mark sinoberg' # __date__ = '2016/5/26' # __Desc__ = 实现发送带有各种附件类型的邮件 ...

  2. Python 发送邮件包含附件报表示例

    之前需要用Python发送报表邮件,在网上找了下资料,基本上符合要求了. 相关的示例如下,懂python的人应该都知道. from email.mime.text import MIMEText fr ...

  3. Python发送邮件(带附件的)

    有时候做自动化测试任务,任务完成后,需要将结果自动发送一封邮件,这里用到smtplib模块,直接导入就行,这里以163邮箱为例,需要用到授权码,我用类写一下: 如果是发送qq邮箱,要将smtp 改成s ...

  4. 【转】【Python】Python发送邮件(常见四种邮件内容)

    在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下,Shell脚本发送邮件告警是件很简单的事,有现成的邮件服务软件或者调 ...

  5. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)

    简介 本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理.在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下, ...

  6. Python发送邮件(常见四种邮件内容)

    Python发送邮件(常见四种邮件内容) 转载 2017年03月03日 17:17:04   转自:http://lizhenliang.blog.51cto.com/7876557/1875330 ...

  7. python发送邮件

    python发送邮件(无附件) ======================================================= #!/usr/bin/env python#coding ...

  8. 解读Python发送邮件

    解读Python发送邮件 Python发送邮件需要smtplib和email两个模块.也正是由于我们在实际工作中可以导入这些模块,才使得处理工作中的任务变得更加的简单.今天,就来好好学习一下使用Pyt ...

  9. python 发送邮件例子

    想到用python发送邮件 主要是服务器 有时候会产生coredump文件  ,然后因为脚本重启原因,服务器coredump产生后会重启 但是没有主动通知开发人员 想了下可以写个脚本一旦产生cored ...

随机推荐

  1. winform下的简易播放器

    编写这个播放器,遇到很多问题,比如目前只实现了wav音频文件的播放,而对于这个图中中间所标注的按钮 不能实现让其暂停的功能,同时当点击的时候,让其文本变为"▷",对于这部分功能不知 ...

  2. Android SDK Manager 更新代理配置

    转自:http://www.cnblogs.com/tao560532/p/4483067.html 出现问题: 消除SDK更新时,有可能会出现这样的错误:Download interrupted: ...

  3. ACM : POJ 2676 SudoKu DFS - 数独

    SudoKu Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu POJ 2676 Descr ...

  4. mysql存不了中文的解决办法

    driver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/testdb?useUnicode=true&characterEnco ...

  5. 管理Scope和Lifetime

    Nick Blumhardt’s Autofac lifetime primer 是一个学习Autofac Scope和Lifetime的好地方.这里有很多未理解的,混淆的概念,因此我们将尝试在这里完 ...

  6. bzoj3631树链剖分

    虽然是水题1A的感觉太爽了O(∩_∩)O~ 题意相当于n-1次树上路径上每个点权值+1,最后问每个点的权值 本来想写线段树,写好了change打算框架打完了再来补,结果打完发现只是区间加和单点查 前缀 ...

  7. Java的四种引用方式

    一.引用基本概念 从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用.虚引用. 1.强引用(StrongRef ...

  8. Android进程间通讯

    最近研究了一下Android进程间通讯,原来只是会用,但是只是会用是不行滴,就来研究一下. 刚开始看的时候,我的头是这么大,看了一夜的时候,头就变成这样了,,吓得宝宝赶紧上床休息了,. 先喝喝茶讲个故 ...

  9. 代码编辑器Sublime Text 3 免费使用方法与简体中文汉化包下载

    Sublime Text这款代码编辑器是Jeff 一直都在使用的,前段时间转用到版本3,因为感觉Sublime Text 3 启动速度更加快,运行更加流畅——虽然3 还是在Beta 阶段.下面就直接分 ...

  10. 基于 Asp.Net的 Comet 技术解析

    Comet技术原理 来自维基百科:Comet是一种用于web的技术,能使服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,长轮询和iframe流. 简单的说是一种基于现 ...