Sample code for 30+ languages & platforms
Delphi ActiveX

GMail App Password

See more GMail SMTP/IMAP/POP Examples

Demonstrates how to authenticate using an app password with GMail for IMAP and SMTP.

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;
imap: TChilkatImap;
mailman: TChilkatMailMan;

begin
success := 0;

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

// Starting May 30, 2022, Google will no longer support the use of third-party apps or devices 
// which ask you to sign in to your Google Account using only your username and password.

// Instead of authenticating with your GMail username/password, a GMail user can create an App Password
// and then login using their username/app_password.   It's literally the same, except it allows a GMail
// account owner to isolate passwords to specific applications.

// The Gmail account owner would first need to make sure she has 2-Step Verification setup for her account.
// Note: The 2FA verification is not a factor when authenticating with an app password. The 2FA is required
// to setup app passwords in the Google account console.  See Sign in with App Passwords

// After the GMail account owner has setup his app password, he simply uses the app password instead of his GMail account password.

// For example:
imap := TChilkatImap.Create(Self);

imap.Ssl := 1;
imap.Port := 993;

success := imap.Connect('imap.gmail.com');
if (success = 0) then
  begin
    Memo1.Lines.Add(imap.LastErrorText);
    Exit;
  end;

success := imap.Login('user@gmail.com','srnyyvqajocnsvdp');
if (success = 0) then
  begin
    Memo1.Lines.Add(imap.LastErrorText);
    Exit;
  end;

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

// For SMTP..

mailman := TChilkatMailMan.Create(Self);

mailman.SmtpHost := 'smtp.gmail.com';

mailman.SmtpUsername := 'user@gmail.com';
mailman.SmtpPassword := 'srnyyvqajocnsvdp';

mailman.SmtpSsl := 1;
mailman.SmtpPort := 465;

success := mailman.SmtpConnect();
if (success = 0) then
  begin
    Memo1.Lines.Add(mailman.LastErrorText);
    Exit;
  end;

success := mailman.SmtpAuthenticate();
if (success = 0) then
  begin
    Memo1.Lines.Add(mailman.LastErrorText);
    Exit;
  end;

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