我正在尝试使用带有Outlook对象模型的外部HTML文件在PowerShell中发送Outlook电子邮件。目前,如果我直接通过here-字符串提供它,我才能让它工作,如下所示:
$Example = "Example"
$body = @"
<!doctype html>
<html>
<head>
<title>Example HTML $</title>
</head>
<body>
<H1>$Example</H1>
</body>
</html>
"@
# Set HTML Body
$mail.HTMLBody = $body
我认为一种非常简单的方法是只获取文件的内容,如下所示:
$HTMLPath = "C:\Users\username\htmlfolder\outlookmessage.html"
$body = Get-Content $HTMLPath
$mail.HTMLBody = $body
然而,HTMLBody方法不会将$Body识别为HTML,并返回电子邮件正文的空值。
我该如何将外部html文件输入到脚本中,而不是对html进行硬编码?
如有任何帮助,不胜感激
1条答案
按热度按时间xpcnnkqh1#
我建议将
HTMLBody
属性设置为任何基本的HTML字符串,而不是依赖于从文件读取的外部内容。例如,您可以尝试使用以下一系列操作来检查属性的工作方式:由于Outlook对象模型对于所有编程语言都是通用的,因此您可能会找到正确设置邮件正文所需的调用序列。
还要注意,Microsoft目前不建议也不支持从任何无人参与、非交互的客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为当Office在此环境中运行时,Office可能会表现出不稳定的行为和/或死锁。
如果要生成在服务器端上下文中运行的解决方案,则应尝试使用已设置为可无人参与执行的安全组件。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果从服务器端解决方案使用Office应用程序,该应用程序将缺少成功运行所需的许多功能。此外,您将在整体解决方案的稳定性方面承担风险。
在Considerations for server-side Automation of Office文章中阅读有关这方面的更多信息。