Delphi Mail OAuth2

Microsoft 365 ve Gmail artık çoğu posta kutusu için düz bir parolayı kabul etmiyor. OAuth2 token'larını alın, taze tutun ve SMTP, IMAP veya POP3 istemcinize tam olarak ihtiyaç duyduğu SASL dizesini verin.

TsgcMailOAuth2

Exchange Online ve Gmail için OAuth 2.0 erişim token'larını alır ve yeniler; XOAUTH2 ve OAUTHBEARER dizelerini oluşturur. Posta sunucusuyla hiçbir zaman doğrudan konuşmaz, bu yüzden Indy TIdSMTP, TIdIMAP4, TIdPOP3 veya ham bir SASL komutu gönderebilen herhangi bir kütüphaneyle çalışır.

Bileşen sınıfı

TsgcMailOAuth2 (sgcAuth_Mail_OAuth2 birimi)

Protokol

SASL OAUTHBEARER (RFC 7628) ve XOAUTH2

Platformlar

Windows, macOS, Linux, iOS, Android

Sürüm

Enterprise ve All-Access, ayrıca sgcAuth paketi. sgcWebSockets .NET içinde de mevcuttur.

Bir kez oturum açın, aylarca posta gönderin

Provider ve Protocols'ü seçin, ClientId'i ayarlayın, saklanan refresh token'ı yeniden kullanın veya Start'ı çağırın, ardından posta oturumunu GetXOAuth2 ile doğrulayın.

uses
  IdSMTP, sgcAuth_Mail_OAuth2;

// Mail is a form field: 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;

  // reuse the stored refresh token, sign in only when it no longer works
  Mail.RefreshToken := LoadRefreshToken;
  if (Mail.RefreshToken = '') or not Mail.Refresh then
    Mail.Start; // opens the browser, PKCE and a loopback redirect
end;

procedure TForm1.OnMailTokensChanged(Sender: TObject; const AccessToken,
  RefreshToken: String; const ExpiresAt: TDateTime);
begin
  SaveRefreshToken(RefreshToken); // encrypt it in your store
end;

// TIdSMTP with UseTLS = utUseExplicitTLS and AuthType = satNone
procedure TForm1.Authenticate(aSMTP: TIdSMTP);
begin
  aSMTP.Connect; // EHLO and 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);

İçeriğinde neler var

Modern postanın OAuth2 kısmı, sağlayıcı ayrıntıları önceden doldurulmuş tek bir bileşende.

Microsoft 365 ve Gmail ön ayarları

Provider, doğru uç noktalarla mopMicrosoft365 veya mopGmail'i seçer. mopCustom, başka herhangi bir sağlayıcı için CustomAuthURL, CustomTokenURL, CustomDeviceAuthorizationURL ve CustomScope'u alır.

Protokollerden gelen kapsamlar

ProtocolsmpSMTP, mpIMAP ve mpPOP3'ün herhangi bir karışımına ayarlayın; bileşen eşleşen kapsamları ister, Microsoft 365'te offline_access ile birlikte. GetScope, nelerin isteneceğini gösterir.

Tarayıcı veya cihaz kodu

Flow, mofAuthorizationCodePKCE'yi (tarayıcı artı loopback yönlendirme, bkz. LocalServerOptions) veya servisler ve konsollar için mofDeviceCode'u seçer; burada OnDeviceCode size gösterilecek kodu ve URL'yi verir.

Token yaşam döngüsü

AccessToken, RefreshToken ve ExpiresAt her zaman günceldir. Refresh, erişim token'ını eşzamanlı olarak yeniler ve OnTokensChanged her seferinde tetiklenir; böylece yeni refresh token'ı kalıcı hale getirebilirsiniz.

Gönderilmeye hazır SASL dizeleri

GetXOAuth2 ve GetOAuthBearer, AUTH XOAUTH2 ve AUTH OAUTHBEARER için Base64 ilk yanıtlarını döndürür. Raw varyantları ve sgcGetXOAuth2 fonksiyonları hata ayıklamaya ve diğer token kaynaklarına yardımcı olur.

Taşımadan bağımsız

Bileşen hiçbir zaman bir posta bağlantısı açmaz. Indy TIdSMTP, TIdIMAP4 veya TIdPOP3'ü ya da ham bir SASL komutu gönderebilen herhangi bir posta kütüphanesini, token isteklerinin TLS'i için HTTPClientOptions ile birlikte kullanın.

Spesifikasyonlar ve referanslar

Bu bileşenin uyguladığı standartlar için yetkili kaynaklar.

Belgeler ve Demolar

Bileşen referansına doğrudan bağlanın, kullanıma hazır demo projesini alın ve denemeyi indirin.

Çevrimiçi Yardım: TsgcMailOAuth2 Tam özellik, metot ve olay referansı, artı Microsoft 365 ve Gmail uygulama kayıt adımları.
Demo Projesi: Demos\26.Authentication\06.Mail_OAuth2 Tarayıcıda ve cihaz koduyla oturum açma, token yenileme ve AUTH XOAUTH2 ile gönderilen bir test postası. sgcWebSockets paketi içinde gelir, denemeyi aşağıdan indirin.
Teknik Belge (PDF) Delphi ve C++ Builder için özellikler, hızlı başlangıç, kod örnekleri ve yalnızca bu bileşene ait birincil kaynak referansları.
Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz.
Blog: Passkey, SAML SSO, LDAP ve TOTP 2FA ile Delphi Oturum Açma Altı kimlik doğrulama bileşeninin tek bir Delphi uygulamasında nasıl bir araya geldiği.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

OAuth2 ile Posta Göndermeye Hazır mısınız?

Ücretsiz denemeyi indirin ve Delphi posta özelliklerinizi Microsoft 365 ve Gmail ile çalışır durumda tutun.