#!/usr/bin/python
# -*- coding: GBK -*-
__filename__ = 'sendEmail.py'
__version__ = 'ver 1.0'
__created__ = '2008-05-30'
__doc__ = """ 发送Email的工具脚本(支持中文,支持附件) """
import email
import mimetypes
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
import smtplib
def sendEmail(authInfo, fromAdd, toAdd, subject, plainText, htmlText, attachFiles):
strFrom = fromAdd
strTo = ', '.join(toAdd)
server = authInfo.get('server')
user = authInfo.get('user')
passwd = authInfo.get('password')
if not (server and user and passwd) :
print 'incomplete login info, exit now'
return
# 设定root信息
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = unicode(subject,'GBK')
msgRoot['From'] = strFrom
msgRoot['To'] = strTo
msgRoot.preamble = 'This is a multi-part message in MIME format.'
# Encapsulate the plain and HTML versions of the message body in an
# 'alternative' part, so message agents can decide which they want to display.
msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)
#设定纯文本信息
msgText = MIMEText(plainText, 'plain', 'GBK')
msgAlternative.attach(msgText)
#设定HTML信息
msgText = MIMEText(htmlText, 'html', 'GBK')
msgAlternative.attach(msgText)
#设定内置图片信息
for filename in attachFiles:
fd = open(filename, 'rb')
mimetype, mimeencoding = mimetypes.guess_type(filename)
if mimeencoding or (mimetype is None):
mimetype = 'application/octet-stream'
maintype, subtype = mimetype.split('/')
if maintype == 'text':
retval = MIMEText(fd.read(), _subtype=subtype)
else:
retval = MIMEBase(maintype, subtype)
retval.set_payload(fd.read())
email.Encoders.encode_base64(retval)
retval.add_header('Content-Disposition', 'attachment',
filename = filename)
fd.close()
msgRoot.attach(retval)
#发送邮件
smtp = smtplib.SMTP()
#设定调试级别,依情况而定
smtp.set_debuglevel(0)
smtp.connect(server)
smtp.login(user, passwd)
smtp.sendmail(strFrom, strTo, msgRoot.as_string())
smtp.quit()
return
if __name__ == '__main__':
authInfo = {'server':'smtp.gnetis.com',
'user':'wangym',
'password':'109!np@$w0rd'}
fromAdd = 'tim.wang@gnetis.com'
toAdd = ['yumin.wang@gnetis.com','bruce.wang@gnetis.com']
subject = '邮件主题'
plainText = '这里是Python发送的邮件普通文本'
htmlText = 'Python发送的邮件HTML文本'
attachFiles = ['types.txt','logo.gif','test.txt.gz','sendEmail.py']
sendEmail(authInfo, fromAdd, toAdd, subject, plainText, htmlText, attachFiles)
sendEmail.py
最新推荐文章于 2024-09-10 14:15:01 发布