Delphi Mail OAuth2
Microsoft 365 en Gmail accepteren voor de meeste mailboxen geen gewoon wachtwoord meer. Haal de OAuth2-tokens op, houd ze actueel, en geef je SMTP-, IMAP- of POP3-client precies de SASL-string die hij nodig heeft.
Microsoft 365 en Gmail accepteren voor de meeste mailboxen geen gewoon wachtwoord meer. Haal de OAuth2-tokens op, houd ze actueel, en geef je SMTP-, IMAP- of POP3-client precies de SASL-string die hij nodig heeft.
Haalt de OAuth 2.0-accesstokens voor Exchange Online en Gmail op en vernieuwt ze, en bouwt de XOAUTH2- en OAUTHBEARER-strings. Het communiceert nooit rechtstreeks met de mailserver, dus het werkt met Indy TIdSMTP, TIdIMAP4, TIdPOP3 of elke bibliotheek die een ruw SASL-commando kan versturen.
TsgcMailOAuth2 (unit sgcAuth_Mail_OAuth2)
SASL OAUTHBEARER (RFC 7628) en XOAUTH2
Windows, macOS, Linux, iOS, Android
Enterprise en All-Access, plus het sgcAuth-pakket. Ook beschikbaar in sgcWebSockets .NET.
Kies de Provider en de Protocols, stel ClientId in, hergebruik het bewaarde refresh token of roep Start aan, en authenticeer de mailsessie met GetXOAuth2.
uses
IdSMTP, sgcAuth_Mail_OAuth2;
// Mail is een form-veld: 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;
// hergebruik het bewaarde refresh token, meld je alleen aan als het niet meer werkt
Mail.RefreshToken := LoadRefreshToken;
if (Mail.RefreshToken = '') or not Mail.Refresh then
Mail.Start; // opent de browser, PKCE en een loopback-redirect
end;
procedure TForm1.OnMailTokensChanged(Sender: TObject; const AccessToken,
RefreshToken: String; const ExpiresAt: TDateTime);
begin
SaveRefreshToken(RefreshToken); // versleuteld bewaren in je opslag
end;
// TIdSMTP met UseTLS = utUseExplicitTLS en AuthType = satNone
procedure TForm1.Authenticate(aSMTP: TIdSMTP);
begin
aSMTP.Connect; // EHLO en 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);
Het OAuth2-deel van moderne mail, verpakt in één component met de providerdetails al ingevuld.
Provider kiest mopMicrosoft365 of mopGmail met de juiste endpoints. mopCustom gebruikt CustomAuthURL, CustomTokenURL, CustomDeviceAuthorizationURL en CustomScope voor elke andere provider.
Zet Protocols op elke combinatie van mpSMTP, mpIMAP en mpPOP3 en het component vraagt de bijbehorende scopes op, met offline_access op Microsoft 365. GetScope toont wat er zal worden opgevraagd.
Flow kiest mofAuthorizationCodePKCE (browser plus loopback-redirect, zie LocalServerOptions) of mofDeviceCode voor services en consoles, waarbij OnDeviceCode je de code en URL geeft om te tonen.
AccessToken, RefreshToken en ExpiresAt zijn altijd actueel. Refresh vernieuwt het access token synchroon en OnTokensChanged wordt elke keer geactiveerd, zodat je het nieuwe refresh token kunt bewaren.
GetXOAuth2 en GetOAuthBearer geven de initiële Base64-responses terug voor AUTH XOAUTH2 en AUTH OAUTHBEARER. De Raw-varianten en de sgcGetXOAuth2-functies helpen bij debuggen en andere tokenbronnen.
Het component opent nooit een mailverbinding. Gebruik Indy TIdSMTP, TIdIMAP4 of TIdPOP3, of elke mailbibliotheek die een ruw SASL-commando kan versturen, met HTTPClientOptions voor de TLS van de tokenaanvragen.
Gezaghebbende bronnen voor de standaarden die dit component implementeert.
Diepe link naar de componentreferentie, pak het kant-en-klare demoproject en download de proefversie.
| Online help — TsgcMailOAuth2 Volledige property-, methode- en event-referentie, plus de registratiestappen voor Microsoft 365- en Gmail-apps. | Openen | |
| Demoproject — Demos\26.Authentication\06.Mail_OAuth2 Aanmelden via browser en device code, token vernieuwen en een testmail verstuurd met AUTH XOAUTH2. Zit in het sgcWebSockets-pakket — download hieronder de proefversie. | Openen | |
| Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi en C++ Builder en primaire bronreferenties — alleen dit component. | Openen | |
| Gebruikershandleiding (PDF) Uitgebreide handleiding die elk component in de bibliotheek behandelt. | Openen | |
| Blog — Delphi-login met passkeys, SAML-SSO, LDAP en TOTP 2FA Hoe de zes authenticatiecomponenten samenwerken in één Delphi-toepassing. | Openen |