Powershell将主体转换为HTML主体

时间:2017-05-08 17:44:01

标签: html powershell powershell-v2.0

我有一个脚本,它会查找文件夹以获取更新,如果有任何更新,我会发送一封电子邮件。如何将电子邮件正文更改或转换为URL或HTML链接而不是文本?

以下路径和服务器就是示例。

这是我的剧本:

    Param (
    [string]$Path = "\\Desktop\Myfolder\status updates",
    [string]$SMTPServer = "smtp.myfolder.com",
    [string]$From = "Admin@me.com",
    [string]$To = "Admin@me.com",
    [string]$CC = "Admin@me.com",
    [string]$Subject = "New Status Report"
    )

$SMTPMessage = @{
    To = $To
    Cc = $cc
    From = $From
    Subject = "$Subject"
    Smtpserver = $SMTPServer    
}

$File = Get-ChildItem $Path | Where { $_.LastWriteTime -ge [datetime]::Now.AddMinutes(-10) }
If ($File)
{   $SMTPBody = "`The following files have recently been added/changed.  Please copy and paste the following link to Windows Explorer:`n`n"
    $File | ForEach { $SMTPBody += "$($_.FullName)`n" }

    Send-MailMessage @SMTPMessage -Body $SMTPBody

2 个答案:

答案 0 :(得分:3)

PowerShell提供Convert-ToHTML cmdlet,非常适合您的需求。

只需将您的内容$SMTPBody加入其中即可。您甚至可以应用CSS文件使电子邮件看起来更好一些。

$HTMLBody = ConvertTo-HTML -body $SMTPBody -CSSUri http://www.csszengarden.com/examples/style.css

然后在电子邮件中引用$HTMLBody

天空是CSS的极限。如果您想阅读更多内容,I covered this topic in a blog post。这是我们可以创造的一个例子。 enter image description here

在此示例中,我们使用-Pre-Post参数添加表格上方和下方的内容。该表是通过使用Convert-ToHTML属性将对象传递到-As Table来创建的。这个只有四个参数的cmdlet可以创建有价值的网页输出!

答案 1 :(得分:1)

$SMTPBody值设置为包含HTML的字符串,然后将-BodyAsHTML开关添加到Send-MailMessage命令。

...
$SMTPBody = "<em>This is italicised</em>"
...

Send-MailMessage -Body $SMTPBody -BodyAsHTML -To ...