Powershell使用Signature打开电子邮件草稿

时间:2014-06-04 18:15:05

标签: email powershell outlook signature

我正在尝试按下一个按钮打开Outlook草稿,我们可以在“收件人:”中输入,然后点击发送。

我的大部分内容都使用以下代码:

$SUBJECT = ('Ticket: ' + $textticketnumber.text)
CreateLink #Function that gets a weblink and stores it to variable $rtblink.Text
$BODY = $rtblink.Text
$EMAILSIG = Get-Content ($env:USERPROFILE + "\AppData\Roaming\Microsoft\Signatures\*.htm")

$ol = New-Object -comObject Outlook.Application
$mail = $ol.CreateItem(0)
$mail.Subject = "$SUBJECT"
$mail.Body = "`n$BODY`n$EMAILSIG"

$inspector = $mail.GetInspector
$inspector.Display()

问题是电子邮件正文的原始HTML代码不是正确的签名。我可以将get-content更改为* .txt而不是.htm但是签名中没有格式化,而且它将所有内容都放在一行上。

有没有办法让代码的主体使用html,还是有另一种方法将签名插入到电子邮件中并使用正确的格式?

1 个答案:

答案 0 :(得分:5)

以下代码来自我的一个脚本:

$sMsg = Get-Content template.html 

$sRecipientAddr = "someone@example.com"
$sMsgSubject = "Subject"

$oOutlook = New-Object -ComObject Outlook.Application 
$oMapiNs = $oOutlook.GetNameSpace("MAPI")
$oMailMsg = $oOutlook.CreateItem(0)
$oMailMsg.GetInspector.Activate()
$sSignature = $oMailMsg.HTMLBody
[Void]$oMailMsg.Recipients.Add($sRecipientAddr)  
$oMailMsg.Subject = $sMsgSubject
$oMailMsg.HTMLBody = $sMsg + $sSignature
$oMailMsg.Save()

我在Outlook 2007中使用它并且它有效。 Outlook配置为自动为新邮件添加签名。 template.html是保存为HTML的预格式化Outlook邮件。

这个想法不是我的,但老实说,我不记得我在哪里找到了这个片段,所以我提前向作者道歉。