sendEmail.py

#!/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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值