Powershell send a table to gmail

This topic contains 6 replies, has 3 voices, and was last updated by  NoProfile 4 months, 1 week ago.

  • Author
  • #89318


    I have a table generated by powershell, I used to be able to send the table to exchange as a html in email body. but now, we have migrated to gmail and the table shows in gmail is just all html code or csv code. After some digging, looks like gmail wont support what I am trying to do. But I tried to copy the table into gmail directly and i received it successfully as no format changes.

    As an alternative, I can have the table attached as html or csv files but i still want to have it in email body.

    Is there anyway that I can still send my table to gmail from powershell?

    $myTable = {PS scripts}

    $EmailBody = $myTable | ConvertTo-html

    $EmailTo = @("me@gmail.com")
    $EmailFrom = "notifications@gmail.com"
    $Subject = "Notifications"
    $Body = $EmailBody
    $SMTPServer = "smtp.gmail.com"
    # $filenameAndPath = "C:\temp\test.csv"
    $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
    # $attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
    # $SMTPMessage.Attachments.Add($attachment)
    $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
    $SMTPClient.EnableSsl = $true
    $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("notification@gmail.com", "xxxxxx");

  • #89321

    Jeremy Corbello

    Not sure why that isn't working, but I've had good luck with Send-MailMessage

    So your syntax when using Send-MailMessage would be something like this

    $smtpsettings = @{ 
        To =  "me@gmail.com" 
        From = "notifications@gmail.com" 
        Subject = "$Subject" 
        SmtpServer = "smtp.gmail.com" 
    $creds = Get-Credential
    Send-MailMessage @smtpsettings -Body $EmailBody -BodyAsHtml -Encoding ([System.Text.Encoding]::UTF8) -Credential $creds

    Check out this site for more documentation and examples. https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/send-mailmessage?view=powershell-5.1

    • #89327


      Do you send to Gmail or Exchange?

    • #89329

      Jeremy Corbello

      I use this on o365 and Exchange. But the premise should be the same.

    • #89341


      No, If i send to our exchange it just works fine. but with gmail. looks like it wont take html tags.... so everything in email body is just all html codes

    • #89362


      It is working now. Thanks for the help

      $myTable = {PS scripts}

      $Header = @"

      TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}
      TH {border-width: 1px; padding: 3px; border-style: solid; border-color: black; background-color: #6495ED;}
      TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;}

      [String[]] $To = "me@gmail.com"
      [String] $From = "notifications@gmail.com"
      [String] $Subject = "Notifications"
      [String] $SMTPServer = "smtp.gmail.com"
      [String] $$SMTPPort = "587"
      [bool] $UseSsl = $true
      $Credential = new-object Management.Automation.PSCredential “notification@gmail.com”, ("password” | ConvertTo-SecureString -AsPlainText -Force)

      $EmailBody = $myTable | ConvertTo-Html -Header | Out-String

      Send-MailMessage -Body $EmailBody -BodyAsHtml -To $To -From $From -Subject $Subject -SmtpServer $SMTPServer -Credential $Credential -UseSsl

  • #89354


You must be logged in to reply to this topic.