在一封电子邮件中收集多个html文件

2024-03-29 08:21:12 发布

您现在位置:Python中文网/ 问答频道 /正文

str_htmlHeader = "<!DOCTYPE HTML PUBLIC>\n<html>\n";
str_htmlHeader += "<head>\n\t<title>Audi Cloud Services</title>\n</head>\n\n";
str_htmlHeader += "<body>\n\n<h1>Nightly build test results</h1>\n";
str_htmlFooter = "\n</body>\n\n</html>";

for root, dirnames, filenames in os.walk(r'\\ac-srvfile01\_Embedded\VCon1\proj_customer\337159_Audi_ACR_and_TSSS\pcm-audio'):
    for filename in fnmatch.filter(filenames, '*.html'):
        reportContent = open(os.path.join(root,filename)).read()
        attachment = MIMEText(str_htmlHeader+reportContent+str_htmlFooter, 'html')
        msg.attach(attachment)

        #msg.attach(MIMEText(open(filename).read(), "text/html"))

我把这封信发给了一个关心的人,但是这封邮件是用另一封邮件发给受尊敬的人的。我想收集所有的报告,并把它作为一个单一的电子邮件发送。但上面的代码是以不同的电子邮件发送报告。有人能帮我解决这个问题吗?在


Tags: infortitleoshtmlbodyrootfilename
1条回答
网友
1楼 · 发布于 2024-03-29 08:21:12

您需要创建一个容器消息,然后在循环中向其添加MIME部分。在

multipart/alternative容器不适合这样做,因为它指示客户机应该选择其中一个部分进行显示,而忽略其余部分。我用了multipart/related。您可能更喜欢multipart/mixed,这并不意味着部件之间存在某种关系。在

str_htmlHeader = '''<!DOCTYPE HTML PUBLIC>
<html>
<head><title>Audvices</title></head>
<body><h1>Nightt results</h1>'''
str_htmlFooter = '''"
</body>\n\n</html>'''

msg = MIMEMultipart('related')
msg['From'] = 'ucd_test'
msg['To'] = 'hemappa@nce.com'
msg['Subject'] = 'AUDICES'

for root, dirnames, filenames in os.walk(r'\\ac-srvR_and_TSSS\pcm-audio'):
    for filename in fnmatch.filter(filenames, '*.html'):
    reportContent = open(os.path.join(root,filename)).read()
    attachment = MIMEText(str_htmlHeader+reportContent+str_htmlFooter, 'html')
    attachment.add_header("Content-Disposition", "attachment",\
                filename=os.path.basename(filename))
    msg.attach(attachment)

server = smtplib.SMTP('eu-smtp.nuance.com')
server.ehlo()
#server.starttls()
#server.login(username,password)
server.sendmail(fromaddress,toaddress.split(','),msg.as_string())
server.quit()

相关问题 更多 >