通过Powershell发送Outlook 2010电子邮件

时间:2014-12-18 13:51:08

标签: email powershell outlook

首先,在我的工作中,我们没有Active Directory,它不会很快改变。

我要做的是,使用HTML向所需用户发送电子邮件。 我写了这个脚本:

#Variables
$sig = Get-Content "%userprofile%\AppData\Roaming\Microsoft\Assinaturas\html.htm"
$Para = "mail@domain.com.br"
$Assunto = "Teste"
$Conteudo="<html>
<head>
<style>
<!--
@font-face {font-family:Calibri; font-size:11.0pt;}
-->
</style>
</head>
<body>
Line1
<br><br>
&emsp;line 2
<br><br>
&emsp;line 3
<br><br>
<strong><em>Line 4</strong></em>
<br>
Atenciosamente,
<br>
</body>
</html
$sig
"

#Writedatbitchdown
$outl = New-Object -ComObject outlook.application
$email = $outl.CreateItem(0)
$email.display()

$email.To = $Para
$email.Subject = $Assunto

$oldbody = $email.HTMLBody
$newbody = $Conteudo
$newbody += $oldbody
$email.HTMLBody = $newbody

Start-Sleep -s 3
$email.Send()
Start-Sleep -s 5
#Quit
$outl.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($outl)
Remove-Variable outl

正如您所看到的,我尝试使用Get-content“signatureFile.htm”添加签名,它根本不起作用,尝试使用默认签名,它也不起作用。我收到了纯文本的电子邮件。

Example

另一种情况是电子邮件以HTML格式发送,而且只显示图像。

如何将签名及其图像与Outlook 2010链接? 如果有什么不清楚,请评论出来,我会尽力表达自己。

1 个答案:

答案 0 :(得分:0)

如果用户已经为新电子邮件分配了签名,则此代码应该在没有$sig的情况下自行运行。也就是说,您正在尝试从文件添加签名,该签名可以处理重要更改,这是您引用环境变量%userprofile%的方式。 PowerShell不会像脚本那样扩展它们。 PowerShell方式是使用env:关键字。请考虑以下

PS C:\Users\mcameron> Get-ChildItem env:

Name                           Value
----                           -----
ALLUSERSPROFILE                C:\ProgramData
APPDATA                        C:\Users\mcameron\AppData\Roaming

在您的情况下,您的$sig应该是这样的:

$sig = Get-Content "$($env:appdata)\Microsoft\Signatures\Logo.htm"

至于嵌入图像我目前还不确定,但会进行调查。作为旁注,我不明白有关ActiveDirectory的评论的原因?