Sample code for 30+ languages & platforms
AutoIt

SendGrid HTML Email with Embedded Images

See more SendGrid Examples

Demonstrates how to send an HTML email with embedded images using SendGrid.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

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

$oReq = ObjCreate("Chilkat.HttpRequest")
$oHttp = ObjCreate("Chilkat.Http")

; First.. load a JPG file and build an HTML img tag with the JPG data inline encoded.
; Our HTML img tag will look like this:
; <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA3ADcAA..." alt="" style="border-width:0px;" />
$oBdJpg = ObjCreate("Chilkat.BinData")
$bSuccess = $oBdJpg.LoadFile("qa_data/jpg/starfish.jpg")
If ($bSuccess = False) Then
    ConsoleWrite("Failed to load JPG file." & @CRLF)
    Exit
EndIf

; Note: HTML containing embedded base64 image data may not be visible in all email clients.
; For example, GMail might not display the image, but viewing in Outlook might be OK.
$oSbHtml = ObjCreate("Chilkat.StringBuilder")
$oSbHtml.Append("<html><body><b>This is a test<b><br /><img src=""data:image/jpeg;base64,")
; Append the base64 image data to sbHtml.
$oBdJpg.GetEncodedSb("base64",$oSbHtml)
$oSbHtml.Append(""" alt="""" style=""border-width:0px;"" /></body></html>")

$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.UpdateString("personalizations[0].to[0].email","matt@chilkat.io")
$oJson.UpdateString("personalizations[0].to[0].name","Matt")
$oJson.UpdateString("from.email","admin@chilkatsoft.com")
$oJson.UpdateString("subject","Test HTML email with images")
$oJson.UpdateString("content[0].type","text/html")
$oJson.UpdateSb("content[0].value",$oSbHtml)

$oHttp.AuthToken = "SENDGRID_API_KEY"

$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpJson("POST","https://api.sendgrid.com/v3/mail/send",$oJson,"application/json",$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite("response status code: " & $oResp.StatusCode & @CRLF)
; Display the response.
; If successful, the response code is 202 and the response body string is empty.
; (The response body string may also be empty for error response codes.)
ConsoleWrite($oResp.BodyStr & @CRLF)