title: PowerShell Display Table In HTML Email
body: <p>Ok, this may have been answered, but I'm new and trying to learn, so I guess I'm not "getting" it.  I have a variable that contains a table of information (I got it from a SQL query).  I can output the variable to the screen and see the table, but when I try to build an HTML email with it in the body, it gets garbled.</p>
  
  <p>Here is the code:</p>
  
  <pre><code># This code sets up the HTML table in a more friendly format
  $style = "&lt;style&gt;BODY{font-family: Arial; font-size: 10pt;}"
  $style = $style + "TABLE{border: 1px solid black; border-collapse: collapse;}"
  $style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
  $style = $style + "TD{border: 1px solid black; padding: 5px; }"
  $style = $style + "&lt;/style&gt;"
  
  # This code defines the search string in the IssueTrak database tables
  $SQLServer = "Blah"
  $SQLDBName = "Blah"
  $SQLUsername = "Blah"
  $SQLPassword = "Blah"
  $SQLQuery = "SELECT u.FirstName,u.LastName,u.EMail,COUNT(UserID) as Count
          FROM dbo.Issues i with(nolock)
          JOIN DBO.Users u with(nolock) on u.UserID = i.NextActionBy
          where i.Status='Open'
          group by u.FirstName,u.LastName,u.EMail
          order by Count(*) desc"
  
  # This code connects to the SQL server and retrieves the data
  $SQLConnection = New-Object System.Data.SqlClient.SqlConnection
  $SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; uid = $SQLUsername; pwd = $SQLPassword"
  
  $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
  $SqlCmd.CommandText = $SqlQuery
  $SqlCmd.Connection = $SqlConnection
  
  $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
  $SqlAdapter.SelectCommand = $SqlCmd
  
  $DataSet = New-Object System.Data.DataSet
  $SqlAdapter.Fill($DataSet)
  $SqlConnection.Close()
  
  # This code outputs the retrieved data
  $DataSet.Tables | Format-Table -Auto
  
  # This code emails a report regarding the results of the retrieved data
  $smtpServer = "Blah"
  $smtpFrom = "Blah"
  $smtpTo = "Blah"
  $messageSubject = "IssueTrak Open Issues By Next Action Report"
  $message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
  $message.Subject = $messageSubject
  $message.IsBodyHTML = $true
  $message.Body = "Here is a listing of open issues in IssueTrak, sorted by Next Action.&lt;br&gt;&lt;br&gt;"
  $message.Body = $message.Body + $html
  
  $smtp = New-Object Net.Mail.SmtpClient($smtpServer)
  $smtp.Send($message)
  </code></pre>
  
  <p>The output on the screen looks like this:</p>
  
  <pre><code>35
  
  FirstName   LastName   EMail                                Count
  ---------   --------   -----                                -----
  John        Doe        John.Doe@blah.com                       51
  Jane        Doe        Jane.Doe@blah.com                       20
  </code></pre>
  
  <p>...but the email body looks like this:</p>
  
  <pre><code>Here is a listing of open issues in IssueTrak, sorted by Next Action.
  
  Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartData
  
  Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData 
  </code></pre>
  
  <p>...and so on.  What am I doing wrong?</p>