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求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
Python Pandas找到缺失值的位置方法
Apr 12 Python
python实现雨滴下落到地面效果
Jun 21 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
python 多维高斯分布数据生成方式
Dec 09 Python
python切片作为占位符使用实例讲解
Feb 17 Python
OpenCV-Python实现图像平滑处理操作
Jun 08 Python
Python字符串常规操作小结
Apr 03 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
Linux下php5.4启动脚本
2014/08/03 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
javascript事件模型介绍
2016/05/31 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
解决pandas 作图无法显示中文的问题
2018/05/24 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
pycharm新建一个python工程步骤
2019/07/16 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
自动化专业毕业生求职信
2014/06/18 职场文书
公司委托书怎么写
2014/08/02 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
大学体育课感想
2015/08/10 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书