2016-10-06 9 views
0

毎日サードパーティのアプリケーションからファイルを引き出し、相手側の関係者にコピーされたすべてのファイルを電子メールで送信します。私はhtmlファイルを生成するときに私の結果は期待どおりですが、私の電子メールの本文に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 = "[email protected]" 
from = "[email protected]" 
BodyAsHtml = $True 
Body = $html 
Subject = "Files in the folder" 
SmtpServer = "mailserver" 
} 

Send-MailMessage @email 
+0

ほとんどの電子メールクライアントによって解釈CSSとHTMLをブラウザが理解の小さなサブセットでの書き込み。 https://www.campaignmonitor.com/css/を参照してください。 –

答えて

1
  1. ConvertTo-Htmlすでに手動でHTMLを生成し、一方、HTMLにオブジェクトを変換します。
    $body変数に入れて-bodyのパラメータをConvertTo-Htmlで使用します。
  2. $rootの必要はありません、ちょうど使用$path
  3. Get-ChildItemでPS3.0の+は
  4. を必要とされていないので、whereそれが失敗しないために、常に-LiteralPathを使用する方が安全だファイルのみを一覧表示するGet-ChildItem-Fileスイッチを持っています[]のワイルドカード指定子として解釈されます。 PowerShellで
  5. \内部の文字列をエスケープする必要はありません、ただ'D:\Temp'

$body = Get-ChildItem -Literal $path -Recurse -File -Include *.xlsx, *.docx, *.txt, *.csv | 
     ForEach { 
      $fPath = $_.FullName.Substring($path.Length + 1) 
      "<a href=""$fPath"">$fPath</a><br>" 
     } 
$html = ConvertTo-Html -Head $head -Body $body | Out-String 
関連する問題