Python发送Email方法实例_python

本文以实例形式展示了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
, 发送
email
python 发送email、python 发送邮件实例、python 实例方法、python实例方法详解、python email,以便于您获取更多的相关知识。

时间: 2024-07-30 23:00:22

Python发送Email方法实例_python的相关文章

Python发送email的3种方法

  这篇文章主要介绍了Python发送email的3种方法,本文讲解了使用登录邮件服务器方法.调用sendmail命令.使用smtp服务来发送三种方法,需要的朋友可以参考下 python发送email还是比较简单的,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送都比较容易实现. 先把几个最简单的发送邮件方式记录下,像html邮件,附件等也是支持的,需要时查文档即可 1.登录邮件服务 代

ASP.NET中发送Email完整实例(转)

asp.net ASP.NET中发送Email完整实例 本文举例说明在ASP.NET中发送Email的众多可能性,内容覆盖了诸如Email格式.优先权.附件及Email编码等方面. ASP.NET被赋予了一个发送Email的新对象,名为SmtpMail.使用SmtpMail对象从ASP.NET页面中发送Email时,可以遵循以下简单步骤: ▲包含与邮件有关类所需要的名称空间:▲例示一个信息对象,设置属性:▲使用SmtpMail对象实例的send方法发送邮件. 现在我们就来一步一步地研究从一个AS

Python中replace方法实例分析_python

本文以实例形式讲述了Python中replace方法,很有实用价值,具体如下: replace方法主要有两种: last_date = "1/2/3" 目标为"123" 方法一:repalce date =last_date.replace('/','') 方法二:re p = re.compile("/") date = p.sub('', last_date) 需要注意的是:一定不要转义,否则函数不会生效. replace 方法返回根据正则表

ASP.NET中发送Email完整实例

本文举例说明在ASP.NET中发送Email的众多可能性,内容覆盖了诸如Email格式.优先权.附件及Email编码等方面. ASP.NET被赋予了一个发送Email的新对象,名为SmtpMail.使用SmtpMail对象从ASP.NET页面中发送Email时,可以遵循以下简单步骤: ▲包含与邮件有关类所需要的名称空间: ▲例示一个信息对象,设置属性: ▲使用SmtpMail对象实例的send方法发送邮件. 现在我们就来一步一步地研究从一个ASP.NET页面发送Email的过程.我们使用了VB来

python人人网登录应用实例_python

本文实例讲述了python人人网登录应用的实现方法,分享给大家供大家参考. 具体方法如下: import re import urllib import urllib2 import cookielib import datetime import time from urllib2 import URLError,HTTPError #第一个参数为日志文件,第二个参数为用户名,第三个参数为密码 def renren_login(logfile,username,password): logfi

基于Python的接口测试框架实例_python

背景 最近公司在做消息推送,那么自然就会产生很多接口,测试的过程中需要调用接口,我就突然觉得是不是可以自己写一个测试框架? 说干就干,由于现有的接口测试工具Jmeter.SoupUI等学习周期有点长,干脆自己写一个吧,不求人,所有功能自己都能一清二楚. 当然,写工具造轮子只是学习的一种方式,现成成熟的工具肯定比我们自己的写的好用. 开发环境 ------------------------------------------------------------- 操作系统:Mac OS X EI

python避免死锁方法实例分析

  本文实例讲述了python避免死锁方法.分享给大家供大家参考.具体分析如下: 当两个或者更多的线程在等待资源的时候就会产生死锁,两个线程相互等待. 在本文实例中 thread1 等待thread2释放block , thread2等待thtead1释放ablock, 避免死锁的原则: 1. 一定要以一个固定的顺序来取得锁,这个列子中,意味着首先要取得alock, 然后再去block 2. 一定要按照与取得锁相反的顺序释放锁,这里,应该先释放block,然后是alock ? 1 2 3 4 5

python之wxPython应用实例_python

本文实例讲述了python之wxPython的使用方法,分享给大家供大家参考.具体方法如下: 先来看看效果,这里加载一张图片: 代码如下: #!/usr/bin/env python """hello wxPython program""" import wx class Frame(wx.Frame): #wxPrame subclass """Frame class that display a image&qu

Python实现类继承实例_python

Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,本文就举一例Python类继承的实例. 实例代码如下: #! /usr/bin/python # Filename: inherit.py # Author: yanggang class SchoolMember: def __init__(self,name,age): self.name = name self.age = age print 'init SchoolMember: ', self.name def tel