Python smtplib与Outlook 2010的HTML格式问题
我正在用elementtree.ElementTree.dump这个方法生成HTML文件。生成的文件在所有浏览器中看起来都没问题,文件里的代码也很正常(没有未闭合的括号或其他问题)。
但是,当我通过smtplib给Outlook 2010发邮件时,格式出现了一些奇怪的问题。这些问题是完全可重复的,所以肯定是有原因的。下面是一个例子:
<table b="" order="1">
这是我自己发的HTML邮件的源代码。它的写法是正确的:
<table border="1">
在原始源代码中。
如果我在Outlook中用原始HTML作为源写一封HTML邮件,它的格式是正确的。(新邮件-附加HTML文件->作为文本插入)
这个问题是出在Outlook上,还是Python上呢?我用来读取HTML文件和发送邮件的函数在下面。
def email_Report(mailOptions):
reportName = time.strftime("%Y%m%d.%H%M") + ".html"
ElementTree(mailOptions['report']).write("/home/%s/%s" %(mailOptions['username'],reportName))
#Set sender and receiver to the user building the report.
mailaddr = '%s@acme.com' %(mailOptions['username'])
#Access the report file. Added binary in case we ever use code on Windows
filename = "/home/%s/%s" % (mailOptions['username'], reportName)
open_file = open(filename, 'rb')
emsg = MIMEText(open_file.read(), 'html')
open_file.close()
emsg['Subject'] = "Report for %s generated by %s %s" % (mailOptions['zone'], mailOptions['username'], time.strftime("%d%m%Y-%H%M"))
emsg['To'] = mailaddr
emsg['From'] = mailaddr
#Hostname can be a parameter to SMTP method if localhost isn't listening
sc = smtplib.SMTP()
sc.connect()
sc.sendmail(mailaddr, mailaddr, emsg.as_string())
sc.close()
return
这个HTML非常简单。没有CSS,没有标题或头部标签等等。就是html->body->table->tr->th->(newrow)->td->td等等。我是不是忽略了什么,比如编码或转义?我需要使用多部分MIME吗?我用的是Python 2.4.3,不能使用任何不自带的模块。