使用PowerShell,我如何发送包含来自外部HTML文件的内容的Outlook电子邮件?

qncylg1j  于 2022-11-10  发布在  Shell
关注(0)|答案(1)|浏览(167)

我正在尝试使用带有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进行硬编码?
如有任何帮助,不胜感激

xpcnnkqh

xpcnnkqh1#

我建议将HTMLBody属性设置为任何基本的HTML字符串,而不是依赖于从文件读取的外部内容。例如,您可以尝试使用以下一系列操作来检查属性的工作方式:

Sub CreateHTMLMail() 
 'Creates a new email item and modifies its properties. 
 Dim objMail As Outlook.MailItem 

 'Create email item 
 Set objMail = Application.CreateItem(olMailItem) 
 With objMail 
   'Set body format to HTML 
   .BodyFormat = olFormatHTML 
   .HTMLBody = "<HTML><BODY>Enter the message text here. </BODY></HTML>" 
   .Display 
 End With 

End Sub

由于Outlook对象模型对于所有编程语言都是通用的,因此您可能会找到正确设置邮件正文所需的调用序列。
还要注意,Microsoft目前不建议也不支持从任何无人参与、非交互的客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为当Office在此环境中运行时,Office可能会表现出不稳定的行为和/或死锁。
如果要生成在服务器端上下文中运行的解决方案,则应尝试使用已设置为可无人参与执行的安全组件。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果从服务器端解决方案使用Office应用程序,该应用程序将缺少成功运行所需的许多功能。此外,您将在整体解决方案的稳定性方面承担风险。
Considerations for server-side Automation of Office文章中阅读有关这方面的更多信息。

相关问题