Python发送Email方法实例

 更新时间:2014年08月21日 11:59:51   投稿:shichen2014   我要评论
这篇文章主要介绍了Python发送Email的方法,有不错的实用价值,代码备有一定的注释便于读者理解,需要的朋友可以参考下

本文以实例形式展示了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='utf-8'
    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('utf-8')
    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('utf-8')
    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中的wxPython实现最基本的浏览器功能

    用Python中的wxPython实现最基本的浏览器功能

    这篇文章主要介绍了用Python中的wxPython实现基本的浏览器功能,本文来自于IBM官方网站开发者文档,需要的朋友可以参考下
    2015-04-04
  • Python、Javascript中的闭包比较

    Python、Javascript中的闭包比较

    这篇文章主要介绍了Python、Javascript中的闭包比较,本文分别讲解了Python和Javascript中的闭包,分对它们的不同做了一个简单的比较,需要的朋友可以参考下
    2015-02-02
  • pandas or sql计算前后两行数据间的增值方法

    pandas or sql计算前后两行数据间的增值方法

    下面小编就为大家分享一篇pandas or sql计算前后两行数据间的增值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python数组循环处理方法

    python数组循环处理方法

    今天小编就为大家分享一篇python数组循环处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python控制多进程与多线程并发数总结

    Python控制多进程与多线程并发数总结

    本篇文章主要介绍了Python控制多进程与多线程并发数,详细讲诉了进程和线程的区别,并介绍了处理方法,有需要的朋友可以了解一下。
    2016-10-10
  • Django Highcharts制作图表

    Django Highcharts制作图表

    Highcharts图表控件是目前使用最为广泛的图表控件 ,是纯JS图表库。这篇文章主要介绍了Django Highcharts制作图表的相关资料,非常的详细,有需要的小伙伴可以来参考下
    2016-08-08
  • Python网络爬虫中的同步与异步示例详解

    Python网络爬虫中的同步与异步示例详解

    这篇文章主要给大家介绍了关于Python网络爬虫中同步与异步的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • Python3安装Scrapy的方法步骤

    Python3安装Scrapy的方法步骤

    本篇文章主要介绍了Python3安装Scrapy的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Python线程指南详细介绍

    Python线程指南详细介绍

    本文介绍了Python对于线程的支持,包括学会多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例
    2017-01-01
  • python 数据生成excel导出(xlwt,wlsxwrite)代码实例

    python 数据生成excel导出(xlwt,wlsxwrite)代码实例

    这篇文章主要介绍了python 数据生成excel导出(xlwt,wlsxwrite)代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论