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 相关文章推荐
通过mod_python配置运行在Apache上的Django框架
Jul 22 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
python 全局变量的import机制介绍
Sep 07 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
python url 参数修改方法
Dec 26 Python
python+pyqt5实现图片批量缩放工具
Mar 18 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
使用python进行广告点击率的预测的实现
Jul 04 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
python使用Word2Vec进行情感分析解析
Jul 31 Python
Python二元算术运算常用方法解析
Sep 15 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
人族 Terran 魔法与科技
2020/03/14 星际争霸
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
纯javascript版日历控件
2016/11/24 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
python遍历类中所有成员的方法
2015/03/18 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
如何用SQL语句进行模糊查找
2015/09/25 面试题
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
实习老师个人总结的自我评价
2013/09/28 职场文书
办公室文书岗位职责
2013/12/16 职场文书
执行力心得体会
2013/12/31 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
前台岗位职责
2015/02/13 职场文书
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
js作用域及作用域链工作引擎
2022/07/07 Javascript