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中的异常处理简明介绍
Apr 13 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
简单实现python进度条脚本
Dec 18 Python
python itsdangerous模块的具体使用方法
Feb 17 Python
Python基于smtplib协议实现发送邮件
Jun 03 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 Python
pytorch 如何使用amp进行混合精度训练
May 24 Python
python实现会员信息管理系统(List)
Mar 18 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网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
JS实现HTML页面中动态显示当前时间完整示例
2018/07/30 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
德国拖鞋网站:German Slippers
2019/11/08 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
党员年终民主评议的自我评价
2013/11/05 职场文书
公司活动策划方案
2014/01/13 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
python编程项目中线上问题排查与解决
2021/11/01 Python
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫