Ein Mail mit der Powershell zu versenden ist, nicht so einfach, wie man glauben möchte. Jedenfalls nicht, wenn man es über Gmail machen möchte. Das Basiskonstrukt ist relativ einfach und bei jedem Mail-Provider gleich:

Email ohne HTML Body

$EmailFrom = "xy@googlemail.com"
$EmailTo = "ab@gmail.com"
$Subject = "TEST"
$Body = "this is a notification from XYZ Notifications.."
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "pw");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

Email mit HTML Body

$EmailFrom = "xy@googlemail.com"
$EmailTo = "ab@gmail.com"
$Subject = "TEST"
$Body = "<html><h1>this is a notification from XYZ Notifications..</h1></html>"

$mail = New-Object System.Net.Mail.Mailmessage $EmailFrom, $EmailTo, $Subject, $Body
$mail.IsBodyHTML=$true

$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "pw");
$SMTPClient.Send($mail)

Es sind jedoch 2 Dinge zu beachten:

  • username = Email ohne “@gmail.com”
  • PW ist nicht das PW mit dem man sich bei Gmail einloggt, sondern ein APP-Passwort, sofern man die 2 Faktor Authentifizierung aktiviert hat (ist mittlerweile Standard) – hier anlegen: https://www.google.com/settings/security