【问题标题】:HTML formatting issues with python smtplib and Outlook 2010python smtplib 和 Outlook 2010 的 HTML 格式问题
【发布时间】:2014-08-21 14:43:01
【问题描述】:

我正在使用元素上的 elementtree.ElementTree.dump 生成 html 文件。这些文件在所有浏览器中看起来都不错,并且文件中的底层代码看起来也很好(没有未闭合的括号或任何东西)。

当我通过 smtplib 向 Outlook 2010 发送电子邮件时,我看到了奇怪的格式问题。这些问题将是 100% 可重复的,因此问题是合乎逻辑的。这是一个例子:

<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 multipart吗?我使用的是 Python 2.4.3,无法使用任何没有库存的模块。

【问题讨论】:

  • 为了进一步比较,我在读入后对具有 MIMEText 的变量使用了“print()”语句。然后,我将生成的 HTML 与 Outlook 中显示的源进行了比较。我重新生成了代码,但仍然有不同的问题。表格的未对齐部分有这样一行:&amp;lt;td&amp;gt;mytext&lt;/td&gt; 出现在 print() 和 repr() 的变量中的 html:&lt;td&gt;mytext&lt;/td&gt;
  • 对于未来的读者来说,它与 elementtree 绑定的原因是 elementtree.ELementTree.dump() 会输出一行 xml。在这种情况下,我的线路是 26k 长。

标签: python outlook-2010 smtplib


【解决方案1】:

您确定您没有达到邮件服务器的 990 个字符限制吗? workaround for the 990 character limitation for email mailservers

【讨论】:

猜你喜欢
  • 2011-04-16
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
相关资源
最近更新 更多