![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) SendGrid HTML Email with Embedded ImagesSee more SendGrid ExamplesDemonstrates how to send an HTML email with embedded images using SendGrid.Note: This example requires Chilkat v11.0.0 or greater.
IncludeFile "CkJsonObject.pb" IncludeFile "CkHttp.pb" IncludeFile "CkHttpRequest.pb" IncludeFile "CkHttpResponse.pb" IncludeFile "CkBinData.pb" IncludeFile "CkStringBuilder.pb" Procedure ChilkatExample() success.i = 0 ; This requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code req.i = CkHttpRequest::ckCreate() If req.i = 0 Debug "Failed to create object." ProcedureReturn EndIf http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; 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;" /> bdJpg.i = CkBinData::ckCreate() If bdJpg.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkBinData::ckLoadFile(bdJpg,"qa_data/jpg/starfish.jpg") If success = 0 Debug "Failed to load JPG file." CkHttpRequest::ckDispose(req) CkHttp::ckDispose(http) CkBinData::ckDispose(bdJpg) ProcedureReturn 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. sbHtml.i = CkStringBuilder::ckCreate() If sbHtml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkStringBuilder::ckAppend(sbHtml,"<html><body><b>This is a test<b><br /><img src=" + Chr(34) + "data:image/jpeg;base64,") ; Append the base64 image data to sbHtml. CkBinData::ckGetEncodedSb(bdJpg,"base64",sbHtml) CkStringBuilder::ckAppend(sbHtml,Chr(34) + " alt=" + Chr(34) + Chr(34) + " style=" + Chr(34) + "border-width:0px;" + Chr(34) + " /></body></html>") json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckUpdateString(json,"personalizations[0].to[0].email","matt@chilkat.io") CkJsonObject::ckUpdateString(json,"personalizations[0].to[0].name","Matt") CkJsonObject::ckUpdateString(json,"from.email","admin@chilkatsoft.com") CkJsonObject::ckUpdateString(json,"subject","Test HTML email with images") CkJsonObject::ckUpdateString(json,"content[0].type","text/html") CkJsonObject::ckUpdateSb(json,"content[0].value",sbHtml) CkHttp::setCkAuthToken(http, "SENDGRID_API_KEY") resp.i = CkHttpResponse::ckCreate() If resp.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkHttp::ckHttpJson(http,"POST","https://api.sendgrid.com/v3/mail/send",json,"application/json",resp) If success = 0 Debug CkHttp::ckLastErrorText(http) CkHttpRequest::ckDispose(req) CkHttp::ckDispose(http) CkBinData::ckDispose(bdJpg) CkStringBuilder::ckDispose(sbHtml) CkJsonObject::ckDispose(json) CkHttpResponse::ckDispose(resp) ProcedureReturn EndIf Debug "response status code: " + Str(CkHttpResponse::ckStatusCode(resp)) ; 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.) Debug CkHttpResponse::ckBodyStr(resp) CkHttpRequest::ckDispose(req) CkHttp::ckDispose(http) CkBinData::ckDispose(bdJpg) CkStringBuilder::ckDispose(sbHtml) CkJsonObject::ckDispose(json) CkHttpResponse::ckDispose(resp) ProcedureReturn EndProcedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.