发送图片附件邮件

def sendMail(from_email, to_email ,subject,plain_text, html_body, files):
    # 打开HTML格式的文件,这是要发送的邮件正文

    msgRoot = MIMEMultipart('related')

    if to_email.find('ic.net.cn'):
        msgRoot['Subject'] = email.Header.Header(subject.decode('utf-8').encode('gb2312'), 'gb2312') 
    else:
        msgRoot['Subject'] = email.Header.Header(subject.decode('utf-8'), 'utf-8') 

    #msgRoot['Subject'] = subject
    msgRoot['From'] = from_email
    msgRoot['To'] = to_email.replace('\n','')
    msgRoot.preamble = 'This is a multi-part message in MIME format.'
    msgRoot["Accept-Charset"]="ISO-8859-1,utf-8"

    msgAlternative = MIMEMultipart('alternative')
    msgRoot.attach(msgAlternative)
    # 设定纯文本信息
    msgText = MIMEText(plain_text.encode('utf-8'),"plain","utf-8")
    msgAlternative.attach(msgText)
    # 设定HTML邮件正文

    #发送附件
    for file in files: 
        fp = open(file, 'rb')  
        msgImage = MIMEImage(fp.read())  
        fp.close()  
        msgImage.add_header('Content-ID', '<image1>')  
        msgRoot.attach(msgImage)  

    html_body = "%s <br/><img src='cid:image1' />" % html_body

    msgText = MIMEText(html_body, 'html','utf-8')
    msgAlternative.attach(msgText)

    #发送邮件
    smtp = smtplib.SMTP(Host)
    smtp.set_debuglevel(0)
    # auth login 命令
    smtp.docmd("HELO %s" %Host)
    smtp.docmd("AUTH LOGIN")
    # 发送用户名,是base64编码过的,用send发送的,所以要用getreply获取返回信息
    smtp.send(base64.encodestring(username))
    smtp.getreply()
    # 发送密码
    smtp.send(base64.encodestring(password))
    smtp.getreply()
    try:
        error = smtp.sendmail(from_email,to_email,msgRoot.as_string())
    finally:
        smtp.quit()

猜你喜欢

转载自xiaolin0199.iteye.com/blog/2031086