Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
SendGrid HTML Email with Embedded Images
See more SendGrid Examples
Demonstrates how to send an HTML email with embedded images using SendGrid.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Http,
Chilkat.HttpResponse,
Chilkat.StringBuilder,
Chilkat.JsonObject,
Chilkat.HttpRequest,
Chilkat.BinData;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
req: THttpRequest;
http: THttp;
bdJpg: TBinData;
sbHtml: TStringBuilder;
json: TJsonObject;
resp: THttpResponse;
begin
success := False;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code
req := THttpRequest.Create;
http := THttp.Create;
// 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 := TBinData.Create;
success := bdJpg.LoadFile('qa_data/jpg/starfish.jpg');
if (success = False) then
begin
WriteLn('Failed to load JPG file.');
Exit;
end;
// 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 := TStringBuilder.Create;
sbHtml.Append('<html><body><b>This is a test<b><br /><img src="data:image/jpeg;base64,');
// Append the base64 image data to sbHtml.
bdJpg.GetEncodedSb('base64',sbHtml);
sbHtml.Append('" alt="" style="border-width:0px;" /></body></html>');
json := TJsonObject.Create;
json.UpdateString('personalizations[0].to[0].email','matt@chilkat.io');
json.UpdateString('personalizations[0].to[0].name','Matt');
json.UpdateString('from.email','admin@chilkatsoft.com');
json.UpdateString('subject','Test HTML email with images');
json.UpdateString('content[0].type','text/html');
json.UpdateSb('content[0].value',sbHtml);
http.AuthToken := 'SENDGRID_API_KEY';
resp := THttpResponse.Create;
success := http.HttpJson('POST','https://api.sendgrid.com/v3/mail/send',json,'application/json',resp);
if (success = False) then
begin
WriteLn(http.LastErrorText);
Exit;
end;
WriteLn('response status code: ' + resp.StatusCode);
// 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.)
WriteLn(resp.BodyStr);
req.Free;
http.Free;
bdJpg.Free;
sbHtml.Free;
json.Free;
resp.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.