# encoding: ascii # api: powershell # title: Send-HTMLFormattedEmail # description: Use this function to send an HTML Formatted Email that is based on an XSLT template. This function is based on a blog post by Erik McCarty (http://ewmccarty.spaces.live.com). # version: 1.0 # type: function # author: tysonkopczynski # license: CC0 # function: Send-HTMLFormattedEmail # x-poshcode-id: 951 # x-derived-from-id: 1035 # x-archived: 2016-10-09T05:41:14 # x-published: 2009-03-15T04:29:00 # # #------------------------------------------------- # Send-HTMLFormattedEmail #------------------------------------------------- # Usage: Used to send an HTML Formatted Email that is based on an XSLT template. #------------------------------------------------- function Send-HTMLFormattedEmail{ param ( [string] $To, [string] $ToDisName, [string] $BCC, [string] $From, [string] $FromDisName, [string] $Subject, [string] $Content, [string] $Relay, [string] $XSLPath) try { # Load XSL Argument List $XSLArg = New-Object System.Xml.Xsl.XsltArgumentList $XSLArg.Clear() $XSLArg.AddParam("To", $Null, $ToDisName) $XSLArg.AddParam("Content", $Null, $Content) # Load Documents $BaseXMLDoc = New-Object System.Xml.XmlDocument $BaseXMLDoc.LoadXml("") $XSLTrans = New-Object System.Xml.Xsl.XslCompiledTransform $XSLTrans.Load($XSLPath) #Perform XSL Transform $FinalXMLDoc = New-Object System.Xml.XmlDocument $MemStream = New-Object System.IO.MemoryStream $XMLWriter = [System.Xml.XmlWriter]::Create($MemStream) $XSLTrans.Transform($BaseXMLDoc, $XSLArg, $XMLWriter) $XMLWriter.Flush() $MemStream.Position = 0 # Load the results $FinalXMLDoc.Load($MemStream) $Body = $FinalXMLDoc.Get_OuterXML() # Create from, To, BCC and the message strucures $MessFrom = New-Object System.Net.Mail.MailAddress $From, $FromDisName $MessTo = New-Object System.Net.Mail.Mailaddress $To $MessBCC = New-Object System.Net.Mail.Mailaddress $BCC $Message = New-Object System.Net.Mail.MailMessage $MessFrom, $MessTo # Populate message $Message.Subject = $Subject $Message.Body = $Body $Message.IsBodyHTML = $True # Add BCC $Message.BCC.Add($MessBCC) # Create SMTP Client $Client = New-Object System.Net.Mail.SmtpClient $Relay # Send The Message $Client.Send($Message) } catch { return $Error[0] } } ### XSLT Template Example My First Formatted Email

Dear ,

Please do not respond to this email!
An automated system sent this email, if any point you have any questions or concerns please open a help desk ticket.

Many thanks from your:
Really Cool IT Team