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 相关文章推荐
java直接调用python脚本的例子
Feb 16 Python
Python实现从百度API获取天气的方法
Mar 11 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
Python环境下搭建属于自己的pip源的教程
May 05 Python
python 获取当天凌晨零点的时间戳方法
May 22 Python
python实现录音小程序
Oct 26 Python
在python 中实现运行多条shell命令
Jan 07 Python
详解django+django-celery+celery的整合实战
Mar 19 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
python 成功引入包但无法正常调用的解决
Mar 09 Python
Python数据可视化之绘制柱状图和条形图
May 25 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/04/07 PHP
php学习之变量的使用
2011/05/29 PHP
php网上商城购物车设计代码分享
2012/02/15 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
JavaScript实现表格排序方法
2013/06/14 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
js实现碰撞检测特效代码分享
2016/10/16 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
从vue源码看props的用法
2019/01/09 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
Python中的Numpy入门教程
2014/04/26 Python
Python基于有道实现英汉字典功能
2015/07/25 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
python实现决策树
2017/12/21 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
python3正则模块re的使用方法详解
2020/02/11 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
大学生党员自我评价范文
2014/04/09 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技