Sample code for 30+ languages & platforms
Delphi DLL

Send HTML Email with Image Downloaded from URL

Demonstrates how to compose an HTML email with an embedded image where the image data is downloaded from a URL.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, BinData, Email, MailMan;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
bdJpg: HCkBinData;
http: HCkHttp;
mailman: HCkMailMan;
email: HCkEmail;
html: PWideChar;

begin
success := False;

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

// First download the image we'll be adding to the HTML "img" tag.
bdJpg := CkBinData_Create();
http := CkHttp_Create();
success := CkHttp_QuickGetBd(http,'https://www.chilkatsoft.com/images/starfish.jpg',bdJpg);
if (success = False) then
  begin
    Memo1.Lines.Add(CkHttp__lastErrorText(http));
    Exit;
  end;

mailman := CkMailMan_Create();

// Use your SMTP server..
CkMailMan_putSmtpHost(mailman,'smtp.yourserver.com');
CkMailMan_putSmtpPort(mailman,587);
CkMailMan_putStartTLS(mailman,True);

// Set the SMTP login/password
CkMailMan_putSmtpUsername(mailman,'my_login');
CkMailMan_putSmtpPassword(mailman,'my_password');

// Create an HTML email.
email := CkEmail_Create();
CkEmail_putSubject(email,'HTML Email with Image');
CkEmail_putFrom(email,'Dave <somebody@mydomain.com>');
CkEmail_AddTo(email,'Chilkat','info@chilkatsoft.com');

html := '<html><body><p>This is an HTML email with an embedded image.</p><p><img src="starfish.jpg" /></p></body></html>';
CkEmail_SetHtmlBody(email,html);

// Note: The "starfish.jpg" here must match the name in the "img" tag's "src" attribute in the HTML above.
success := CkEmail_AddRelatedBd2(email,bdJpg,'starfish.jpg');
if (success = False) then
  begin
    Memo1.Lines.Add(CkEmail__lastErrorText(email));
    Exit;
  end;

CkEmail_SaveEml(email,'qa_output/out.eml');

// success = mailman.SendEmail(email);
// if (success == ckfalse) {
//     println mailman.LastErrorText;
//     return;
// }
// 
// ignore = mailman.CloseSmtpConnection();

Memo1.Lines.Add('Success.');

CkBinData_Dispose(bdJpg);
CkHttp_Dispose(http);
CkMailMan_Dispose(mailman);
CkEmail_Dispose(email);

end;