<#
.SYNOPSIS
Send email with optional attachments
.DESCRIPTION
PowerShelll script for a function to send email with optional attachments. It accepts a comma-separated list of attachments, or no attachments at all.
For dot-source inclusion to work if the script is hosted on a UNC path, you may need to add the url "file:\\unc-path-to-share" to the Internet Explorer local Intranet site list on the server running the script.
.INPUTS
None
.OUTPUTS
None
.EXAMPLE
PS> .\Send-Email.ps1
Send-Email -EmailTo "user@yourdomain.co.uk" -EmailSubject "Log files attached" -EmailBody "Please find attached the log files" -EmailAttachments "C:\logs\Logfile.txt","C:\logs\Logfile2.txt"
This command sends an email with 2 attachments
.EXAMPLE
PS> .\Send-Email.ps1
$EmailRecipients = @("user@yourdomain.co.uk","user2@yourdomain.co.uk","admin@yourdomain.co.uk")
Send-Email -EmailTo $EmailRecipients -EmailSubject "Test message" -EmailBody "Hello"
These commands send an email to multiple recipients
.EXAMPLE
PS> .\Send-Email.ps1
Send-Email -EmailTo "user@yourdomain.co.uk" -EmailFrom "admin@yourdomain.co.uk" -EmailSMTPServer "mailserver.yourdomain.co.uk" -EmailSubject "Log file attached" -EmailBody "Please find attached the log file" -EmailAttachments "C:\logs\Logfile.txt"
This command shows all parameters
.LINK
https://www.techexplorer.co.uk/powershell-script-to-send-email-with-optional-attachments
#>
#--------------------------------------------------------------------------------
# Script: Send-Email.ps1
# Author: Dan Tonge, www.techexplorer.co.uk
# Version: 1.0 2013-04-11
# Version: 1.1 2015-06-01 Added multiple recipient syntax examples
# Version: 1.2 2020-06-08 Added comment-based help for the script
#--------------------------------------------------------------------------------
Function Send-Email
{
Param
(
[parameter(Mandatory=$true,HelpMessage="Email To Address")] $EmailTo,
[parameter(HelpMessage="Email From Address")] $EmailFrom = [String]$env:computerName.ToLower() + '@yourdomain.co.uk',
[parameter()] $EmailSMTPServer = 'mailserver.yourdomain.co.uk',
[parameter(Mandatory=$true,HelpMessage="Email subject line")] $EmailSubject,
[parameter(Mandatory=$true,HelpMessage="Email content")] $EmailBody,
[parameter(HelpMessage="Optional Attachments")] $EmailAttachments
) #end Param
# build a "splat" parameter: a hash of {parameter name, parameter value} to avoid passing the Attachments parameter when not needed
# http://stackoverflow.com/questions/14560270/send-mailmessage-attachments-will-not-accept-null-for-any-variables
$attachments = @()
if ($EmailAttachments)
{
$attachments += $EmailAttachments
}
$params = @{}
if ($attachments.Length -gt 0)
{
$params['Attachments'] = $attachments
}
Send-MailMessage @params -To $EmailTo -From $EmailFrom -SmtpServer $EmailSMTPServer -Subject $EmailSubject -Body $EmailBody
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter