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 2.6 升级至 Python 2.7 的实践心得
Apr 27 Python
简单了解Django模板的使用
Dec 20 Python
Flask实现跨域请求的处理方法
Sep 27 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
python微信公众号开发简单流程实现
Mar 09 Python
解决python使用list()时总是报错的问题
May 05 Python
Python远程方法调用实现过程解析
Jul 28 Python
python Selenium 库的使用技巧
Oct 16 Python
python pillow库的基础使用教程
Jan 13 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
May 25 Python
Python Matplotlib绘制动画的代码详解
May 30 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 CURL模拟GET及POST函数代码
2010/04/25 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
javascript radio 联动效果
2009/03/04 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
vue循环中点击选中再点击取消(单选)的实现
2020/09/10 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
Python 学习笔记
2008/12/27 Python
python实现二叉查找树实例代码
2018/02/08 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
python pytest进阶之xunit fixture详解
2019/06/27 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
QML实现钟表效果
2020/06/02 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
市场营销工作计划书
2014/09/15 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
地道战观后感2000字
2015/06/04 职场文书
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记
Python正则表达式中flags参数的实例详解
2022/04/01 Python
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫