output turns into oneliner when sent via email

This topic contains 0 replies, has 1 voice, and was last updated by Profile photo of Forums Archives Forums Archives 5 years, 6 months ago.

  • Author
    Posts
  • #5707

    by jgk-ps at 2013-03-21 15:58:57

    Hello guys

    im having some problem with the output from the following:

    $forwardboxs = (Get-Mailbox | where {$_.forwardingaddress -like "*contacts*"})
    $body = @()

    $body += foreach ($box in $forwardboxs){

    "name: " + $box.Name
    "email: " + $box.windowsemailaddress
    "forwards to: " + ($box.forwardingaddress | Get-MailContact).windowsemailaddress
    "---"
    }

    Send-MailMessage -To dude -From anotherdude -Subject "forwarding mailboxes" -Encoding UTF8 -Body "$body" -SmtpServer server

    in the shell, the output from the $body variable looks like this:

    name: dude
    email: dude@dude.com
    forwards to: anotherdude@dude.com

    name: anotherdude
    email: anotherdude@dude.com
    forwards to: dude@dude.com

    which is the way i want it, however the email i receive just contains one long line, like so:

    name: dude email: dude@dude.com forwards to: anotherdude@dude.com — name: anotherdude email: anotherdude@dude.com forwards to: dude@dude.com

    is there anyway to prevent this?

    by ps_gregg at 2013-03-21 20:58:41

    Hi JGK,

    It looks like you need to add a carriage return/line feed to the end of each line. Also when I am sending emails like this I always declare the body variable as a string, I add each line individually to the variable instead of at the beginning of the foreach loop (the way you had it might contain unwanted spaces) and I don't need to use the Encoding in the Send-MailMessage cmdlet.

    $forwardboxs = (Get-Mailbox | where {$_.forwardingaddress -like "*contacts*"})
    [string]$body = @()

    foreach ($box in $forwardboxs){

    $body += "name: " + $box.Name + "`r`n"
    $body += "email: " + $box.windowsemailaddress + "`r`n"
    $body += "forwards to: " + ($box.forwardingaddress | Get-MailContact).windowsemailaddress + "`r`n"
    $body += "—`r`n"
    }

    Send-MailMessage -To dude -From anotherdude -Subject "forwarding mailboxes" -Body "$body" -SmtpServer server

    Hope that helps.
    -Gregg

    by mjolinor at 2013-03-22 03:25:25

    An easy way to fix that is to run $body through out-string before you use it as the email body:

    $body = $body | out-string
    Send-MailMessage -To dude -From anotherdude -Subject "forwarding mailboxes" -Body "$body" -SmtpServer server

    by jgk-ps at 2013-03-22 10:41:59

    how awkward, of course out-string would have worked perfectly.

    thanks a bunch guys 🙂

You must be logged in to reply to this topic.