Sample code for 30+ languages & platforms
AutoIt

Send HTML Email with External CSS as Related Item

See more SMTP Examples

Demonstrates how to compose an HTML email with an external CSS file included as a related item and referenced by CID (Content-ID).

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.

; The mailman object is used for sending and receiving email.
$oMailman = ObjCreate("Chilkat.MailMan")

; Use your SMTP server hostname.  This example uses office365, but it could be any SMTP server..
$oMailman.SmtpHost = "outlook.office365.com"
$oMailman.SmtpPort = 587
$oMailman.StartTLS = True

; Set the SMTP login/password
$oMailman.SmtpUsername = "OFFICE365-SMTP-LOGIN"
$oMailman.SmtpPassword = "OFFICE365-SMTP-PASSWORD"

; Create a new email object
$oEmail = ObjCreate("Chilkat.Email")
$oEmail.Subject = "HTML Email with embedded CSS"
$oEmail.From = "Chilkat Support <my-office365-user@mydomain.com>"
$oEmail.AddTo("Chilkat Support","support@chilkatsoft.com")

$oSbCss = ObjCreate("Chilkat.StringBuilder")
Local $bCrlf = True
$oSbCss.AppendLine("body {",$bCrlf)
$oSbCss.AppendLine("    background-color: powderblue;",$bCrlf)
$oSbCss.AppendLine("}",$bCrlf)
$oSbCss.AppendLine("h1 {",$bCrlf)
$oSbCss.AppendLine("    color: blue;",$bCrlf)
$oSbCss.AppendLine("}",$bCrlf)
$oSbCss.AppendLine("p {",$bCrlf)
$oSbCss.AppendLine("    color: red;",$bCrlf)
$oSbCss.AppendLine("}",$bCrlf)

; It's possible to add a CSS file directly by calling AddRelatedFile.
; This example will add the CSS from a string.
Local $sFilenameInHtml = "styles.css"
Local $sContentIdCss = $oEmail.AddRelatedString($sFilenameInHtml,$oSbCss.GetAsString(),"utf-8")
If ($oEmail.LastMethodSuccess <> True) Then
    ConsoleWrite($oEmail.LastErrorText & @CRLF)
    Exit
EndIf

; The src attribute for the image tag is set to the contentIdCss:
$oSbHtml = ObjCreate("Chilkat.StringBuilder")
$oSbHtml.AppendLine("<!DOCTYPE html>",$bCrlf)
$oSbHtml.AppendLine("<html>",$bCrlf)
$oSbHtml.AppendLine("<head>",$bCrlf)
$oSbHtml.AppendLine("  <link rel=""stylesheet"" href=""cid:CONTENT_ID_CSS"">",$bCrlf)
$oSbHtml.AppendLine("</head>",$bCrlf)
$oSbHtml.AppendLine("<body>",$bCrlf)
$oSbHtml.AppendLine("",$bCrlf)
$oSbHtml.AppendLine("<h1>This is a heading</h1>",$bCrlf)
$oSbHtml.AppendLine("<p>This is a paragraph.</p>",$bCrlf)
$oSbHtml.AppendLine("",$bCrlf)
$oSbHtml.AppendLine("</body>",$bCrlf)
$oSbHtml.AppendLine("</html>",$bCrlf)

Local $iNumReplacements = $oSbHtml.Replace("CONTENT_ID_CSS",$sContentIdCss)

$oEmail.SetHtmlBody $oSbHtml.GetAsString()

$bSuccess = $oMailman.SendEmail($oEmail)
If ($bSuccess <> True) Then
    ConsoleWrite($oMailman.LastErrorText & @CRLF)
Else
    ConsoleWrite("Mail Sent!" & @CRLF)
EndIf