简体   繁体   中英

Sending a properly email with line breaks

I am attempting to send the log files contents in the body of an email using Send-MailMessage. I tried using `r`n to no effect.

My email in outlook looks like the following....

在此处输入图片说明

My desired mail output :

在此处输入图片说明

Here is my script :

$SourceDir = "C:\Temp\"
#$GCI_Fiter = '*.txt'
$Include=@("*.log","*.txt")

$FileList = Get-ChildItem -LiteralPath $SourceDir -Include "$Include" -File

$myvar = @()
foreach ($FL_Item in $FileList)   {
#$FLI_Content = Get-Content -LiteralPath $FL_Item.FullName
#$ExceptionLines = $FLI_Content | Select-String 'Exception' | ForEach-Object {$_.ToString().Trim()}
#if ($FLI_Content Get-Content -Path $file.FullName | Select-String "Exception" )
#){

$results = Get-Content -Path $FL_Item.FullName | Select-String "Exception"

if ($results) {
    Write-Host "$($FL_Item.FullName) Exception found." -BackgroundColor Cyan
    #$myvar += $results
    $LINE = "$($FL_Item.Name)" + ":"
    $EMAILBODY = $LINE + "`r`n"
    $myvar += $EMAILBODY + $results + "`r`n"
    Write-Output "Exception found"
}
else {
    Write-Host "$($FL_Item.FullName) No exception found." -BackgroundColor Green
    Write-Output "No exception found"
}

#}
#$ExceptionLines = $FLI_Content | Select-String -SimpleMatch 'Exception olustu'
#$ExceptionLines = $FLI_Content | Select-String -SimpleMatch 'Exception' | ForEach-Object {$_.ToString().Trim()}
#$FLI_Content

}

return $myvar


        $MailBody = "Hi,`r

        Exception logs. `r

        "+$myvar+"

        `r  
        `r
        Regards,
        "

Send-MailMessage -to $emailto -Subject $subject -SmtpServer $smtp -From $fromaddress -Body $MailBody -Encoding ([System.Text.Encoding]::UTF8) -Credential $creds

Another way is to use $Outlook = New-Object -ComObject Outlook.Application . I have come across a similar case. If you are using Outlook for example use the below code, however you format the email in the $Mail.Body, that is how they will receive the email.

$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = "usermail@something.com"
$Mail.Subject = "Powershell"
$Mail.Body ="email text here"
$Date = (Get-Date).tostring("yyyyMMdd")
$File = "C:\Users\user\Desktop\log$Date.csv"
$Mail.Attachments.Add($File)
$Mail.Send()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM