我们每天从第三方应用程序中提取文件,然后发送一封电子邮件,将所有文件复制到另一方的相关人员。当我生成html文件时,我的结果是预期的,但当我尝试在我的电子邮件正文中嵌入与html相同的结果时,我只得到数字而不是文件夹路径&文件名。不确定导致这种情况的原因。请指导我。
$head = @"
<Title>Files in folder</Title>
<style>
Body { font-family: "Verdana", "Geneva", sans-serif; background-color:#F0E68C; }
table { border-collapse:collapse; width:50% }
td { font-size:12pt; border:1px #0000FF solid; padding:5px 5px 5px 5px; }
th { font-size:14pt; text-align:left; padding-top:5px; padding-bottom:5px; background-color:#0000FF; color:#FFFFFF; }
name tr{ color:#000000; background-color:#0000FF; }
</style>
"@
#file path
$path = "D:\\Temp"
$root = (Get-Item $path).FullName
#output html as string
$html = Get-ChildItem $root -recurse -include *.xlsx, *.docx, *.txt, *.csv |
where { $_.PSIsContainer -eq $false } | %
{
$fPath = $_.FullName.Remove(0, $root.Length + 1)
Write-Output "<a href=`"$fPath`">$fPath</a><br />"
} | ConvertTo-Html -Head $head | Out-String
#email
$email = @{
To = "userA@domain.com"
from = "userB@domain.com"
BodyAsHtml = $True
Body = $html
Subject = "Files in the folder"
SmtpServer = "mailserver"
}
Send-MailMessage @email
答案 0 :(得分:1)
ConvertTo-Html
将对象转换为HTML,而您已手动生成HTML
将其放入$body
变量并使用-body
的{{1}}参数。ConvertTo-Html
,只需在$root
中使用$path
Get-ChildItem
中-File
切换,仅列出文件,因此不需要Get-ChildItem
where
总是更安全,以便在-LiteralPath
和[
字符被解释为通配符说明符的路径上不会失败。]
,只需编写\
'D:\Temp'