Emailing results of task trouble

This topic contains 3 replies, has 2 voices, and was last updated by Profile photo of dudzy dudzy 1 month, 2 weeks ago.

  • Author
    Posts
  • #63598
    Profile photo of dudzy
    dudzy
    Participant

    Hey All

    Currently I have ran into a problem with the way my results are reading when sending email containing what was captured.

    #Pull in email showing approvals
    Function Global:Get-Email {
    Param(
    [String]$Folder = "InBox",
    [String]$Test ="Subject",
    [String]$Compare = "Group Access"
        )
    Process{
    $Folder = $Folder
    Add-Type -Assembly "Microsoft.Office.Interop.Outlook"
    $Outlook = New-Object -ComObject Outlook.Application
    $Namespace = $Outlook.GetNameSpace("MAPI")
    $NameSpace.Folders.Item(0)
    $Email = $NameSpace.Folders.Item(1).Folders.Item($Folder).Items
    Clear-Host
    Write-Host "Trawling through Outlook, please wait ...."
    $Email | Where-Object {$_.$Test -match $Compare} | Sort-Object -Property `
    @{Expression = "Unread";Descending=$true}, `
    @{Expression = "Subject";Descending=$true} `
    | select subject | Out-String
    $Output = $Email | Where-Object {$_.$Test -match $Compare} | Sort-Object -Property `
    @{Expression = "Unread";Descending=$true}, `
    @{Expression = "Subject";Descending=$true} `
    | select subject | Out-String
    Write-Host "Sending Email containing results"
    Send-MailMessage -SmtpServer 'smtp.youremail.com' -To 'youremail@youremail.com'  -From 'youremail@youremail.com' -Subject "Automated Approval Report" -Body "$Output" -BodyAsHtml -Priority High -ErrorAction Stop
        } # End of main section 'Process'
    }
    Get-Email  #-Compare false
    

    Gives me this Output, which is correct, the email just reads wrong, explained below
    _________________________________________
    Trawling through Outlook, please wait ....

    Subject
    ——-
    Group Access – Order# 0000000 has been APPROVED
    Group Access – Order# 0000001 has been APPROVED

    However the email that is sent looks like this:
    Subject ——- Group Access – Order# 0000000 has been APPROVED Group Access – Order# 0000000 has been APPROVED

    I would like it to look like this:
    Group Access – Order# 0000000 has been APPROVED
    Group Access – Order# 0000001 has been APPROVED

  • #63600
    Profile photo of Don Jones
    Don Jones
    Keymaster

    That's because you've specified that the body is HTML. In HTML, carriage returns are ignored. The problem is that you haven't actually provided HTML. I'd consider removing -BodyAsHTML. Or, run your output through ConvertTo-HTML (using -Fragment) before Out-String, if HTML is actually your desire.

    Also, you should consider switching to Write-Verbose for your "status" messages.

    • #63618
      Profile photo of dudzy
      dudzy
      Participant

      Those are some good tips, i will test them out and post my results, still learning so all the help is very appropriated!

  • #63619
    Profile photo of dudzy
    dudzy
    Participant

    So i have taken -bodyashtml
    My result is now better but i cannot get it to split the string, going to do some research, below is the return i get in email

    Subject
    ——-
    Group Access – Order# 2132098 has been APPROVED Group: GG$NSC-ID Administration – User: lentzk1 Group Access – Order# 2132098 has been APPROVED Group: GG$NSC-ID Administration – User: dawsoa2

You must be logged in to reply to this topic.