Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
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 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.MailMan,
Chilkat.StringBuilder,
Chilkat.Email;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
mailman: TMailMan;
email: TEmail;
sbCss: TStringBuilder;
bCrlf: Boolean;
filenameInHtml: string;
contentIdCss: string;
sbHtml: TStringBuilder;
numReplacements: Integer;
begin
success := 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.
mailman := TMailMan.Create;
// Use your SMTP server hostname. This example uses office365, but it could be any SMTP server..
mailman.SmtpHost := 'outlook.office365.com';
mailman.SmtpPort := 587;
mailman.StartTLS := True;
// Set the SMTP login/password
mailman.SmtpUsername := 'OFFICE365-SMTP-LOGIN';
mailman.SmtpPassword := 'OFFICE365-SMTP-PASSWORD';
// Create a new email object
email := TEmail.Create;
email.Subject := 'HTML Email with embedded CSS';
email.From := 'Chilkat Support <my-office365-user@mydomain.com>';
email.AddTo('Chilkat Support','support@chilkatsoft.com');
sbCss := TStringBuilder.Create;
bCrlf := True;
sbCss.AppendLine('body {',bCrlf);
sbCss.AppendLine(' background-color: powderblue;',bCrlf);
sbCss.AppendLine('}',bCrlf);
sbCss.AppendLine('h1 {',bCrlf);
sbCss.AppendLine(' color: blue;',bCrlf);
sbCss.AppendLine('}',bCrlf);
sbCss.AppendLine('p {',bCrlf);
sbCss.AppendLine(' color: red;',bCrlf);
sbCss.AppendLine('}',bCrlf);
// It's possible to add a CSS file directly by calling AddRelatedFile.
// This example will add the CSS from a string.
filenameInHtml := 'styles.css';
contentIdCss := email.AddRelatedString(filenameInHtml,sbCss.GetAsString(),'utf-8');
if (email.LastMethodSuccess <> True) then
begin
WriteLn(email.LastErrorText);
Exit;
end;
// The src attribute for the image tag is set to the contentIdCss:
sbHtml := TStringBuilder.Create;
sbHtml.AppendLine('<!DOCTYPE html>',bCrlf);
sbHtml.AppendLine('<html>',bCrlf);
sbHtml.AppendLine('<head>',bCrlf);
sbHtml.AppendLine(' <link rel="stylesheet" href="cid:CONTENT_ID_CSS">',bCrlf);
sbHtml.AppendLine('</head>',bCrlf);
sbHtml.AppendLine('<body>',bCrlf);
sbHtml.AppendLine('',bCrlf);
sbHtml.AppendLine('<h1>This is a heading</h1>',bCrlf);
sbHtml.AppendLine('<p>This is a paragraph.</p>',bCrlf);
sbHtml.AppendLine('',bCrlf);
sbHtml.AppendLine('</body>',bCrlf);
sbHtml.AppendLine('</html>',bCrlf);
numReplacements := sbHtml.Replace('CONTENT_ID_CSS',contentIdCss);
email.SetHtmlBody(sbHtml.GetAsString());
success := mailman.SendEmail(email);
if (success <> True) then
begin
WriteLn(mailman.LastErrorText);
end
else
begin
WriteLn('Mail Sent!');
end;
mailman.Free;
email.Free;
sbCss.Free;
sbHtml.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.