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算法学习之计数排序实例
Dec 18 Python
python自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
Python使用matplotlib绘制动画的方法
May 20 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
python交互式图形编程实例(二)
Nov 17 Python
python开启摄像头以及深度学习实现目标检测方法
Aug 03 Python
用Python解决x的n次方问题
Feb 08 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
使用pyqt 实现重复打开多个相同界面
Dec 13 Python
Python之字典添加元素的几种方法
Sep 30 Python
python图片灰度化处理的几种方法
Jun 23 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 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加密解密实用类分享
2014/01/07 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
PHP微信API接口类
2016/08/22 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
JavaScript Eval 函数使用
2010/03/23 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
微信跳一跳python代码实现
2018/01/05 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
python程序输出无内容的解决方式
2020/04/09 Python
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
大学生自我鉴定范文
2013/12/28 职场文书
小组合作学习反思
2014/02/18 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
地道战观后感2000字
2015/06/04 职场文书
中学教师教学工作总结
2015/08/13 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
导游词之张家口
2019/12/13 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers