Sending HTML email using delphi and indy


This example shows how to send HTML emails using Delphi and Indy, with embedded images.

uses
idMessage;

procedure TForm1.Button1Click(Sender: TObject);
var
html: TStrings;
htmpart, txtpart: TIdText;
bmppart: TIdAttachment;
email: TIdMessage;
filename: string;
begin
filename := ExtractFilePath(Application.ExeName) + ‘us.jpg’;

html := TStringList.Create();
html.Add(‘<html>’);
html.Add(‘<head>’);
html.Add(‘</head>’);
html.Add(‘<body><h1>Hello</h1>’);
html.Add(‘<img src=”cid:us.jpg” />’);
html.Add(‘This is a picture of us!</body>’);
html.Add(‘</html>’);

email := TIdMessage.Create(nil);
email.From.Text := ‘Pete@NooooSpammmm.Droopyeyes.com’;
email.Recipients.EMailAddresses := ‘Pete@NoooSpammmm.droopyeyes.com’;
email.Subject := ‘Hello’;
email.ContentType := ‘multipart/mixed’;
email.Body.Assign(html);

txtpart := TIdText.Create(email.MessageParts);
txtpart.ContentType := ‘text/plain’;
txtpart.Body.Text := ”;

htmpart := TIdText.Create(email.MessageParts, html);
htmpart.ContentType := ‘text/html’;

bmppart := TIdAttachment.Create(email.MessageParts, filename);
bmppart.ContentType := ‘image/jpeg’;
bmppart.FileIsTempFile := true;
bmppart.ContentDisposition := ‘inline’;
bmppart.ExtraHeaders.Values['content-id'] := ‘us.jpg’;
bmppart.DisplayName := ‘us.jpg’;

try
idSMTP.Connect();
try
idSMTP.Send(email);
ShowMessage(‘Sent’);
except
on E: Exception do
ShowMessage(‘Failed: ‘ + E.Message);
end;
finally
idSMTP.Disconnect();
email.Free();
html.Free();
end;
end;

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.