我试图弄清楚如何将python脚本的一些输出发送到我的Outlook邮箱。现在我在格式化方面遇到了一些问题。我的原始方法如下
def email_mailbox(file_checked, error_list):
error_msg = ''
for e in error_list:
if e is not None:
e += '\n'
error_msg += e
if len(error_msg) > 1:
error_msg += '\nAutomated Test Result: FAILED'
else:
error_msg = 'Automated Test Result: PASSED'
msg = MIMEText(error_msg)
msg['Subject'] = 'Automated Review ' + file_checked[:-6]
msg['From'] = 'a'
msg['To'] = 'b'
s = smtplib.SMTP('smlsmtp')
s.sendmail('a', 'b', msg.as_string())
s.quit()
print(file_checked + ' Review Email Sent')
问题在于,当我发送大量输出时,由于某些未知原因,某些行不会显示在新行上
使用Note Pad打开电子邮件地址,我可以看到格式化正常
UBNZI91D Does not start with a P<BR>
UBNZI09M Does not start with a P<BR>
UBNZC66D Does not start with a P<BR>
UBNZC66D Quantitative Resources not correct<BR>
UBNZC67D Does not start with a P<BR>
UBNZC67D Quantitative Resources not correct<BR>
UBNZC68D Does not start with a P<BR>
UBNZC68D Quantitative Resources not correct<BR>
UBNZC69D Does not start with a P<BR>
UBNZC69D Quantitative Resources not correct<BR>
UBNZF08D Does not start with a P<BR> UBNZEND1 Does not start with a P<BR>
我的python技能还可以,我很确定这是一个编码问题,但我对我的生活无法理解为什么它没有正确格式化。我试过了
for e in error_list:
if e is not None:
new_line = '<BR>'
new_line.encode('ascii', 'xmlcharrefreplace')
e += new_line
error_msg += e
我在这里发现http://beckism.com/2009/03/named_entities_python/没有运气。阅读我在outlook中发送的普通文本电子邮件的纯文本,我发现以下内容
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 14.03.0162.000">
<TITLE>test 2</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<P><FONT SIZE=2>New line<BR>
New line<BR>
<BR>
Cheers,<BR>
<BR>
任何帮助都会在这个神秘中受到高度赞赏
答案 0 :(得分:0)
考虑使用您首选的编程语言自动化Outlook。请参阅How to automate Outlook from another program和C# app automates Outlook (CSAutomateOutlook)。 MSDN中的Chapter 17: Working with Item Bodies文章介绍了使用邮件正文的所有可能方法。
请注意,Microsoft目前不推荐也不支持任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)的Microsoft Office应用程序自动化,因为Office在此环境中运行Office时,可能会出现不稳定的行为和/或死锁。
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。有关详细信息,请参阅Considerations for server-side Automation of Office。