src/SendEwsMessage.ps1

Function Send-EwsMessage {
    [CmdletBinding()]
    [OutputType([System.Void])]
    Param(
        [Parameter(Mandatory)]
        [MailAddress[]]$To,

        [Parameter(Mandatory)]
        [String]$Subject,

        [Parameter(Mandatory)]
        [String]$Body,

        [Microsoft.Exchange.WebServices.Data.BodyType]$BodyType = 'Text',

        [ValidateNotNullOrEmpty()]
        $ItemAttachment,

        [Switch]$DoNotKeep,

        [Microsoft.Exchange.WebServices.Data.ExchangeService]$Service = $Script:Service
    )

    $Message = New-Object Microsoft.Exchange.WebServices.Data.EmailMessage -ArgumentList $Service
    $Message.Subject = $Subject

    ForEach($Recipient in $To) {
        $Null = $Message.ToRecipients.Add($Recipient)
    }

    $Message.Body = New-Object Microsoft.Exchange.WebServices.Data.MessageBody
    $Message.Body.BodyType = [Microsoft.Exchange.WebServices.Data.BodyType]::Text
    $Message.Body.Text = $Body

    If($ItemAttachment) {
        $Message.Attachments.AddItemAttachment($ItemAttachment)
    }

    If(-Not $DoNotKeep) {
        $Message.SendAndSaveCopy((Get-EwsWellKnownFolder -FolderName SentItems -Service $Service).Id)
    }
}