Sample code for 30+ languages & platforms
Delphi ActiveX

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 ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
bdJpg: TChilkatBinData;
http: TChilkatHttp;
mailman: TChilkatMailMan;
email: TChilkatEmail;
html: WideString;

begin
success := 0;

// 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 := TChilkatBinData.Create(Self);
http := TChilkatHttp.Create(Self);
success := http.QuickGetBd('https://www.chilkatsoft.com/images/starfish.jpg',bdJpg.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(http.LastErrorText);
    Exit;
  end;

mailman := TChilkatMailMan.Create(Self);

// Use your SMTP server..
mailman.SmtpHost := 'smtp.yourserver.com';
mailman.SmtpPort := 587;
mailman.StartTLS := 1;

// Set the SMTP login/password
mailman.SmtpUsername := 'my_login';
mailman.SmtpPassword := 'my_password';

// Create an HTML email.
email := TChilkatEmail.Create(Self);
email.Subject := 'HTML Email with Image';
email.From := 'Dave <somebody@mydomain.com>';
email.AddTo('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>';
email.SetHtmlBody(html);

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

email.SaveEml('qa_output/out.eml');

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

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