Sample code for 30+ languages & platforms
Delphi DLL

SMTP NTLM Authentication

See more SMTP Examples

Demonstrates how to specify NTLM authentication for sending email via SMTP.

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, MailMan, Email;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
mailman: HCkMailMan;
useCurrentWindowsUser: Boolean;
email: HCkEmail;

begin
success := False;

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

mailman := CkMailMan_Create();

// Specify your particular mail server's SMTP settings.
CkMailMan_putSmtpHost(mailman,'smtp.my_mail_server.com');
CkMailMan_putSmtpPort(mailman,587);
CkMailMan_putStartTLS(mailman,True);

// This assumes you know your SMTP server supports NTLM authentication.
// To explicitly request NTLM authentication, set the SmtpAuthMethod property = "ntlm".
CkMailMan_putSmtpAuthMethod(mailman,'ntlm');

// Note: Normally you should avoid setting the SmtpAuthMethod.
// SMTP servers tell the connecting client the authentication methods it will accept when the initial connection is made.
// Chilkat will automatically use this information to select and use the most secure auth method supported by the server.

useCurrentWindowsUser := True;

if (useCurrentWindowsUser = True) then
  begin
    // If you are running on Windows, and you wish for the NTLM credentials of the current logged-on Windows user to be used,
    // set the username and password to the string "default"
    CkMailMan_putSmtpUsername(mailman,'default');
    CkMailMan_putSmtpPassword(mailman,'default');
  end
else
  begin
    // Explicitly specify the SMTP username/password
    // The SMTP username is your email account username, which is often your email address.
    CkMailMan_putSmtpUsername(mailman,'your_smtp_username_or_email_address');
    CkMailMan_putSmtpPassword(mailman,'your_password');
  end;

email := CkEmail_Create();

CkEmail_putSubject(email,'This is a test');
CkEmail_putBody(email,'This is a test');
// Don't forget to change this to use your email addresses..
CkEmail_putFrom(email,'Chilkat Support <support@chilkatsoft.com>');
success := CkEmail_AddTo(email,'Chilkat Admin','admin@chilkatsoft.com');
// To add more recipients, call AddTo, AddCC, or AddBcc once per recipient.

success := CkMailMan_SendEmail(mailman,email);
if (success <> True) then
  begin
    Memo1.Lines.Add(CkMailMan__lastErrorText(mailman));
    Exit;
  end;

success := CkMailMan_CloseSmtpConnection(mailman);
if (success <> True) then
  begin
    Memo1.Lines.Add('Connection to SMTP server not closed cleanly.');
  end;

Memo1.Lines.Add('Mail Sent!');

CkMailMan_Dispose(mailman);
CkEmail_Dispose(email);

end;