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进行一些简单的自然语言处理的教程
Mar 31 Python
Python实现简单过滤文本段的方法
May 24 Python
Django自定义分页效果
Jun 27 Python
python导出hive数据表的schema实例代码
Jan 22 Python
python列表生成式与列表生成器的使用
Feb 23 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
Jan 30 Python
python三引号输出方法
Feb 27 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
Jul 12 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 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中使用X-SendFile头让文件下载更快
2014/06/01 PHP
yii2中使用Active Record模式的方法
2016/01/09 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
javascript随机变色实例代码
2019/10/15 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
python字典按照value排序方法
2020/12/28 Python
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
大韩航空官方网站:Korean Air
2017/10/25 全球购物
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
python re模块和正则表达式
2021/03/24 Python
贸易经济专业自荐书
2014/06/29 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2014年团队工作总结
2014/11/24 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书