Sending e-mail
Integration with e-mail is a key capability for automating administration tasks. With e-mail, you can run tasks that automatically let you know when they are complete, or e-mail users when information is needed from them, or even send reports to administrators.
This recipe shows different methods of sending e-mail to users.
Getting ready
To send an e-mail using PowerShell, we will need a mail system capable of accepting SMTP mail from your computer. This can be a Microsoft Exchange server, and IIS server, a Linux host, or even a public mail service such as Google Mail. The method we use may change how the e-mail appears to the end recipient and may cause the message to be flagged as spam.
How to do it...
To send e-mail using the traditional .NET
method:
Open PowerShell and load the following function:
function Send-SMTPmail($to, $from, $subject, $smtpServer, $body) { $mailer = new-object Net.Mail.SMTPclient($smtpServer) $msg = new-object Net.Mail.MailMessage($from, $to, $subject, $body) $msg.IsBodyHTML = $true $mailer.send($msg) }
To send the mail message, call the following function:
Send-SMTPmail -to "admin@contoso.com" -from "mailer@contoso.com" ` -subject "test email" -smtpserver "mail.contoso.com" -body "testing"
To send e-mail using the included PowerShell Cmdlet.
Use the
Send-MailMessage
command as shown:Send-MailMessage -To admin@contoso.com -Subject "test email" ` -Body "this is a test" -SmtpServer mail.contoso.com ` -From mailer@contoso.com
How it works...
The first method shown uses a traditional .NET
process to create and send the e-mail. If you have experience programming in one of the .NET
languages, this process may be familiar. The function starts by creating a Net.Mail.SMTPclient
object that allows it to connect to the mail server. Then a Net.Mail.MailMessage
object is created and populated with the e-mail content. Lastly, the e-mail is sent to the server.
The second method uses a in-built PowerShell cmdlet named Send-MailMessage
. This method simplifies the mailing method into a single command while providing flexibility in the mailing options and methods of connecting to mail servers.
There's more...
Most e-mail functions can be performed by the Send-MailMessage
command. More information can be found by executing help Send-MailMessage
. The following additional command switches allow the command to perform most mail functions needed:
Attachments
CC/BCC
SMTP authentication
Delivery notification
E-mail priority
SSL encryption