python自动发送邮件自定义邮件发件人和收件人的显示内容

  #自定义处理邮件收发地址的显示内容
    def _format_addr(s):
        name,addr = parseaddr(s)
        print name
        print addr
        #将邮件的name转换成utf-8格式,addr如果是unicode,则转换utf-8输出,否则直接输出addr
        return formataddr((\
            Header(name,'utf-8').encode(),\
            addr.encode("utf-8") if isinstance(addr,unicode) else addr))

    #邮件对象
    msg['From'] = _format_addr(u'测试机 <%s>'%from_addr)
    msg['to'] = _format_addr(u'吴鹏rhythm <%s>'%to_addr)

下图是使用上面代码后,收发件人的邮箱地址显示

以下是python自动发送邮件的完整代码:

#coding=utf-8
from email.header import Header
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email.utils import parseaddr,formataddr
import smtplib,time,os
def filepath():    
    filepath = "D:\\Python27\\selenium_\\report"
    listdirs = os.listdir(filepath)
    listdir = sorted(listdirs)
    filename = os.path.join(filepath,listdir[-1])
    return filename

def sendmail(reportfile):
    from_addr = "[email protected]"
    password = "xxxxxx"
    to_addr = "[email protected]"
    smtp_server = "smtp.formssi.com"
    #自定义处理邮件收发地址的显示内容
    def _format_addr(s):
        name,addr = parseaddr(s)
        print name
        print addr
        #将邮件的name转换成utf-8格式,addr如果是unicode,则转换utf-8输出,否则直接输出addr
        return formataddr((\
            Header(name,'utf-8').encode(),\
            addr.encode("utf-8") if isinstance(addr,unicode) else addr))
    #读取html内容
    filepath = reportfile
    with open(filepath,'rb') as f:
        content = f.read()
    #邮件正文是MIMEText
    msg = MIMEText(content,'html','utf-8')
    #邮件对象
    msg['From'] = _format_addr(u'测试机 <%s>'%from_addr)
    msg['to'] = _format_addr(u'吴鹏rhythm <%s>'%to_addr)
    msg['Subject'] = Header(u'测试报告自动发送','utf-8').encode()
    msg['date'] = time.strftime("%a,%d %b %Y %H:%M:%S %z")
    #发送邮件
    server = smtplib.SMTP(smtp_server,25)
    server.set_debuglevel(1)
    server.login(from_addr,password)
    server.sendmail(from_addr,to_addr,msg.as_string())
    server.quit()

if __name__ == "__main__":
    filedir = filepath()
    sendmail(filedir)

你可能感兴趣的:(python)