Python发送Email方法实例


Posted in Python onAugust 21, 2014

本文以实例形式展示了Python发送Email功能的实现方法,有不错的实用价值的技巧,且功能较为完善。具体实现方法如下:

主要功能代码如下:

#/usr/bin/env python
# -*- encoding=utf-8 -*-

import base64
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

class CCSendMail:
  def __init__(self,host="your.mailhost.com",username='fromuser@xxx.com',password='passwd'):
    self.__smtp=smtplib.SMTP(host)
    self.__subject=None
    self.__content=None
    self.__from=None
    self.__to=[]
    self.__style='html'
    self.__charset='gb2312'
    self.username = username
    self.password = password
    self.fromAlias='fromuser' #发件人别名
    self.from2=''
    
  def close(self):
    try:
      self.__smtp.quit()
    except Exception ,e:
      pass  
  def setFromAlias(self,alias):
    self.fromAlias=alias
  def setStyle(self,style):
    self.__style = style
  def setFrom2(self,from2):
    self.from2=from2
    
  def setSubject(self,subject):
    self.__subject=subject
    
  def setContent(self,content):
    self.__content=content
    
  def setFrom(self,address):
    self.__from=address
    
  def addTo(self,address):
    self.__to.append(address)
    
  def setCharset(self,charset):
    self.__charset=charset
    
  def send(self):
    try:
      self.__smtp.set_debuglevel(1)
      
      #login if necessary
      if self.username and self.password:
        self.__smtp.login(self.username,self.password)
        
      msgRoot = MIMEMultipart('related')
      msgRoot['Subject'] = self.__subject
      aliasB6=base64.encodestring(self.fromAlias.encode(self.__charset))
      if len(self.from2)==0:
        msgRoot['From'] = "=?%s?B?%s?=%s"%(self.__charset,aliasB6.strip(),self.__from)
      else:
        msgRoot['From'] = "%s"%(self.from2)
      msgRoot['To'] = ";".join(self.__to)
      
      msgAlternative = MIMEMultipart('alternative')
      msgRoot.attach(msgAlternative)
      
      msgText = MIMEText(self.__content, self.__style,self.__charset)
      msgAlternative.attach(msgText)

      self.__smtp.sendmail(self.__from,self.__to,msgRoot.as_string())
      return True
    except Exception,e:
      print "Error ",e
      return False
    
  def clearRecipient(self):
    self.__to = []
  
  #给单个人发送邮件
  def sendHtml(self,address,title,content):
    self.setStyle('html')
    self.setFrom("<%s>"%self.username)
    if not isinstance(content,str):
      content = content.encode('gb18030')
    self.addTo(address)
    self.setSubject(title)
    self.setContent(content)
    ret = self.send()
    self.close()
    return ret
  
  #群发邮件
  def sendMoreHtml(self,addressList,title,content):
    self.setStyle('html')
    self.setFrom("<%s>"%self.username)
    if not isinstance(content,str):
      content = content.encode('gb18030')
    for address in addressList:
      self.addTo(address)
    self.setSubject(title)
    self.setContent(content)
    ret = self.send()
    self.close()
    return ret

#测试
def main():
  send=CCSendMail()
  send.sendHtml('touser@xxx.com',u'邮件标题',u'邮件内容')
  #send.sendMoreHtml([touser1@xx.com,touser2@xx.com],u'邮件标题',u'邮件内容')
 
if __name__=='__main__':
  main()

希望本文所述实例对大家的Python程序设计有一定的帮助。

Python 相关文章推荐
python数据结构之二叉树的建立实例
Apr 29 Python
Python中的id()函数指的什么
Oct 17 Python
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
详解基于django实现的webssh简单例子
Jul 17 Python
在PyCharm下打包*.py程序成.exe的方法
Nov 29 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
Python代码块及缓存机制原理详解
Dec 13 Python
通过Turtle库在Python中绘制一个鼠年福鼠
Feb 03 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
详解Python中的路径问题
Sep 02 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 Python
python中validators库的使用方法详解
Sep 23 Python
Python生成验证码实例
Aug 21 #Python
python中去空格函数的用法
Aug 21 #Python
python实现的重启关机程序实例
Aug 21 #Python
实例讲解Python中的私有属性
Aug 21 #Python
Python创建日历实例
Aug 21 #Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 #Python
python生成日历实例解析
Aug 21 #Python
You might like
PHP页面间传递参数实例代码
2008/06/05 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
php远程下载类分享
2016/04/13 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
node上的redis调用优化示例详解
2018/10/30 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
django2 快速安装指南分享
2018/01/05 Python
python opencv之SURF算法示例
2018/02/24 Python
python读取文件名称生成list的方法
2018/04/27 Python
Django如何配置mysql数据库
2018/05/04 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
python安装sklearn模块的方法详解
2020/11/28 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
大学生求职自荐信
2013/12/12 职场文书
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
初一体育教学反思
2014/01/29 职场文书
老干部工作先进事迹
2014/08/17 职场文书
放飞理想演讲稿
2014/09/09 职场文书