Public/Send-Email.ps1
<# .SYNOPSIS Sends an email using mailkit .DESCRIPTION Sends an email using mailkit .INPUTS None. You cannot pipe objects to Send-Email. .OUTPUTS None .PARAMETER Subject The subject of the email. .PARAMETER Message The message body of the email. .PARAMETER ToName The name to send the email .PARAMETER ToEmail The email address to send the email .EXAMPLE PS> Send-Email -Subject "Error has occured" -Message $ErrorMessage -ToName "Mark Lindell" -ToEmail "mark.lindell@philips.com" .LINK .NOTES The mailkit assemblies must be loaded or located in: .\MailKit.2.8.0\lib\netstandard2.0\mailkit.dll .\MimeKit.2.9.1\lib\netstandard2.0\MimeKit.dll #> function Send-Email { param([String]$Subject, [String]$Message, $ToName, $ToEmail) $config = Get-Variable -Name __emailconfig -Scope Script -ValueOnly -ErrorAction SilentlyContinue if (-not $config) { throw "Email is not configured. Use New-EamilConfig and Set-FileConfig" } if (-not ([System.Management.Automation.PSTypeName]'MailKit.Net.Smtp.SmtpClient').Type) { Add-Type -path ".\MailKit.2.8.0\lib\netstandard2.0\mailkit.dll" } if (-not ([System.Management.Automation.PSTypeName]'MimeKit.MimeMessage').Type) { Add-Type -path ".\MimeKit.2.9.1\lib\netstandard2.0\MimeKit.dll" } $smtp = New-Object MailKit.Net.Smtp.SmtpClient $smtp.Connect($config.Server, $config.Port) if ($config.credentials) { $smtp.Authenticate($config.credentials.GetNetworkCredential().username, $config.credentials.GetNetworkCredential().password) } $msg = New-Object MimeKit.MimeMessage $msg.Sender = $config.senderAddress $msg.Subject = $Subject $from = New-Object Mimekit.MailBoxAddress -ArgumentList $config.fromName, $config.fromEmail if ($PSBoundParameters.ContainsKey('ToName') -and $PSBoundParameters.ContainsKey('ToEmail')) { $to = New-Object Mimekit.MailBoxAddress -ArgumentList $ToName, $ToEmail } else { $to = New-Object Mimekit.MailBoxAddress -ArgumentList $config.toName, $config.toEmail } $body = New-Object MimeKit.TextPart -ArgumentList "plain" $body.Text = $Message $msg.From.Add($from) $msg.To.Add($to) $msg.Body = $body $smtp.Send($msg) } |