2017-12-07 8 views
0

何らかの理由で、電子メールの本文をpowershellに取り込もうとすると、`nエスケープシーケンスを使用した1行の改行は機能しません。PowerShellの本体で単一行折り返しMailMessageが機能しない

これはこれは見通しの私のメールは以下のようになります。改行

foreach($item in $files) 
{ 
    $Body += "$item `n" 
} 

を追加するために失敗している部分である...

param([string]$BuildId, [string]$BuildName) 

$EmailTo = "[email]" 
$EmailFrom = "[email protected]" 
$Subject = "$BuildName $BuildId SpecFlow Reports" 
$Body = "The following SpecFlow reports are attached: `n`n" 
$SMTPServer = "smtp.sendgrid.net" 

$date = Get-Date -Format yyyy-MM-dd 

$files = Get-ChildItem "C:\Build\SA.SEPA.Web.UI.Selenium" -Recurse | Where-Object { $_.Name -match "^.*$date.*\.html$" } | % { $_.FullName } 

foreach($item in $files) 
{ 
    $Body += "$item `n" 
} 

$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body) 

foreach($item in $files) 
{ 
    $attachment = New-Object System.Net.Mail.Attachment($item) 
    $SMTPMessage.Attachments.Add($attachment) 
} 

$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("apikey", "[apiKey]"); 
$SMTPClient.Send($SMTPMessage) 

私のコードです....

enter image description here

あなたはその`n `n DOU見ることができますブレス改行が適用されていますが、`nは適用されていません。ちなみに私が...

の場合
foreach($item in $files) 
{ 
    $Body += "$item `n`n" 
} 

私は二重改行を見る。

1回の改行はどのようにすればよいですか?

+2

通常のWindowsで、改行をキャリッジリターンと改行で区切られています。あなたはそれを試しましたか? – iRon

答えて

1

この問題を解決するには、[Environment] :: NewLineをクリックしてください。この問題に関する多くの頭痛を取り除くでしょう。

使用法:あなたはOK HTML本体を使用する場合は

foreach($item in $files) 
{ 
    $Body += "$item " + [Environment]::NewLine 
} 
0

あなたは改行のため<BR>を使用することができます。 あなたのメッセージ変数に次のプロパティを設定する必要があります: ` 'r'n`:

$SMTPMessage.IsBodyHTML = $true 

$Body += "$item <br>" 
関連する問題