Mail Delphi OAuth2

Microsoft 365 e Gmail non accettano più una password in chiaro per la maggior parte delle caselle di posta. Ottieni i token OAuth2, mantienili aggiornati, e passa al tuo client SMTP, IMAP o POP3 esattamente la stringa SASL di cui ha bisogno.

TsgcMailOAuth2

Ottiene e aggiorna gli access token OAuth 2.0 per Exchange Online e Gmail, e costruisce le stringhe XOAUTH2 e OAUTHBEARER. Non comunica mai con il server di posta, quindi funziona con Indy TIdSMTP, TIdIMAP4, TIdPOP3 o qualsiasi libreria in grado di inviare un comando SASL raw.

Classe del componente

TsgcMailOAuth2 (unit sgcAuth_Mail_OAuth2)

Protocollo

SASL OAUTHBEARER (RFC 7628) e XOAUTH2

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Enterprise

Accedi una volta, invia posta per mesi

Scegli Provider e Protocols, imposta ClientId, riusa il refresh token memorizzato oppure chiama Start, poi autentica la sessione di posta con GetXOAuth2.

uses
  IdSMTP, sgcAuth_Mail_OAuth2;

// Mail è un campo del form: Mail: TsgcMailOAuth2;
procedure TForm1.FormCreate(Sender: TObject);
begin
  Mail := TsgcMailOAuth2.Create(Self);
  Mail.Provider := mopMicrosoft365;
  Mail.Protocols := [mpSMTP];
  Mail.TenantId := 'contoso.onmicrosoft.com';
  Mail.ClientId := 'your-application-id';
  Mail.OnTokensChanged := OnMailTokensChanged;

  // riusa il refresh token memorizzato, accedi di nuovo solo se non funziona più
  Mail.RefreshToken := LoadRefreshToken;
  if (Mail.RefreshToken = '') or not Mail.Refresh then
    Mail.Start; // apre il browser, PKCE e un loopback redirect
end;

procedure TForm1.OnMailTokensChanged(Sender: TObject; const AccessToken,
  RefreshToken: String; const ExpiresAt: TDateTime);
begin
  SaveRefreshToken(RefreshToken); // cifralo nel tuo storage
end;

// TIdSMTP con UseTLS = utUseExplicitTLS e AuthType = satNone
procedure TForm1.Authenticate(aSMTP: TIdSMTP);
begin
  aSMTP.Connect; // EHLO e STARTTLS
  aSMTP.SendCmd('AUTH XOAUTH2 ' + Mail.GetXOAuth2('user@contoso.com'), 235);
end;
// uses: IdSMTP, sgcAuth_Mail_OAuth2
TsgcMailOAuth2 *Mail = new TsgcMailOAuth2(this);
Mail->Provider = mopMicrosoft365;
Mail->Protocols = TsgcMailOAuth2Protocols() << mpSMTP;
Mail->TenantId = "contoso.onmicrosoft.com";
Mail->ClientId = "your-application-id";
Mail->OnTokensChanged = OnMailTokensChanged;

Mail->RefreshToken = LoadRefreshToken();
if (Mail->RefreshToken.IsEmpty() || !Mail->Refresh())
  Mail->Start();

IdSMTP1->Connect();
IdSMTP1->SendCmd("AUTH XOAUTH2 " + Mail->GetXOAuth2("user@contoso.com"), 235);

Cosa contiene

La parte OAuth2 della posta moderna, racchiusa in un componente con i dettagli del provider già impostati.

Preset Microsoft 365 e Gmail

Provider seleziona mopMicrosoft365 o mopGmail con gli endpoint corretti. mopCustom prende CustomAuthURL, CustomTokenURL, CustomDeviceAuthorizationURL e CustomScope per qualsiasi altro provider.

Scope in base ai protocolli

Imposta Protocols con qualsiasi combinazione di mpSMTP, mpIMAP e mpPOP3 e il componente richiede gli scope corrispondenti, con offline_access su Microsoft 365. GetScope mostra cosa verrà richiesto.

Browser o device code

Flow sceglie mofAuthorizationCodePKCE (browser più loopback redirect, vedi LocalServerOptions) oppure mofDeviceCode per servizi e console, dove OnDeviceCode ti fornisce il codice e l'URL da mostrare.

Ciclo di vita del token

AccessToken, RefreshToken ed ExpiresAt sono sempre aggiornati. Refresh rinnova l'access token in modo sincrono e OnTokensChanged viene generato ogni volta, così puoi salvare il nuovo refresh token.

Stringhe SASL pronte da inviare

GetXOAuth2 e GetOAuthBearer restituiscono le risposte iniziali in Base64 per AUTH XOAUTH2 e AUTH OAUTHBEARER. Le varianti Raw e le funzioni sgcGetXOAuth2 aiutano con il debug e altre fonti di token.

Indipendente dal trasporto

Il componente non apre mai una connessione di posta. Usa Indy TIdSMTP, TIdIMAP4 o TIdPOP3, oppure qualsiasi libreria di posta in grado di inviare un comando SASL raw, con HTTPClientOptions per il TLS delle richieste di token.

Specifiche e riferimenti

Fonti autorevoli per gli standard implementati da questo componente.

Documentazione e demo

Vai al riferimento del componente, scarica il progetto demo pronto all'uso e prova la versione trial.

Guida online: TsgcMailOAuth2 Riferimento completo di proprietà, metodi ed eventi, più i passaggi di registrazione dell'app per Microsoft 365 e Gmail.
Progetto demo: Demos\26.Authentication\06.Mail_OAuth2 Accesso via browser e device code, refresh del token e un'email di test inviata con AUTH XOAUTH2. Incluso nel pacchetto sgcWebSockets, scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie, solo per questo componente.
Manuale utente (PDF) Manuale completo che copre tutti i componenti della libreria.
Blog: Login Delphi con Passkey, SAML SSO, LDAP e TOTP 2FA Come i sei componenti di autenticazione si integrano in un'unica applicazione Delphi.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Pronto a inviare posta con OAuth2?

Scarica la versione di prova gratuita e mantieni le funzionalità di posta Delphi funzionanti con Microsoft 365 e Gmail.