Python发送Email方法实例
本文以实例形式展示了Python发送Email功能的实现方法,有不错的实用价值的技巧,且功能较为完善。具体实现方法如下:
主要功能代码如下:
#/usr/bin/envpython
#-*-encoding=utf-8-*-
importbase64
importsmtplib
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.textimportMIMEText
classCCSendMail:
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=''
defclose(self):
try:
self.__smtp.quit()
exceptException,e:
pass
defsetFromAlias(self,alias):
self.fromAlias=alias
defsetStyle(self,style):
self.__style=style
defsetFrom2(self,from2):
self.from2=from2
defsetSubject(self,subject):
self.__subject=subject
defsetContent(self,content):
self.__content=content
defsetFrom(self,address):
self.__from=address
defaddTo(self,address):
self.__to.append(address)
defsetCharset(self,charset):
self.__charset=charset
defsend(self):
try:
self.__smtp.set_debuglevel(1)
#loginifnecessary
ifself.usernameandself.password:
self.__smtp.login(self.username,self.password)
msgRoot=MIMEMultipart('related')
msgRoot['Subject']=self.__subject
aliasB6=base64.encodestring(self.fromAlias.encode(self.__charset))
iflen(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())
returnTrue
exceptException,e:
print"Error",e
returnFalse
defclearRecipient(self):
self.__to=[]
#给单个人发送邮件
defsendHtml(self,address,title,content):
self.setStyle('html')
self.setFrom("<%s>"%self.username)
ifnotisinstance(content,str):
content=content.encode('gb18030')
self.addTo(address)
self.setSubject(title)
self.setContent(content)
ret=self.send()
self.close()
returnret
#群发邮件
defsendMoreHtml(self,addressList,title,content):
self.setStyle('html')
self.setFrom("<%s>"%self.username)
ifnotisinstance(content,str):
content=content.encode('gb18030')
foraddressinaddressList:
self.addTo(address)
self.setSubject(title)
self.setContent(content)
ret=self.send()
self.close()
returnret
#测试
defmain():
send=CCSendMail()
send.sendHtml('touser@xxx.com',u'邮件标题',u'邮件内容')
#send.sendMoreHtml([touser1@xx.com,touser2@xx.com],u'邮件标题',u'邮件内容')
if__name__=='__main__':
main()
希望本文所述实例对大家的Python程序设计有一定的帮助。