html OAuth 2.0 ile E-Posta Gönderim Kurulumu (Google / Microsoft)

d7p OAuth 2.0 ile E-Posta Gönderim Kurulumu

Google (GOAUTH) ve Microsoft (MOAUTH) Yöntemleri
İlgili Tablo: UDEFT13 — Özel Kullanıcı Değerleri
Mail Gönderim Yöntemi: GOAUTH / MOAUTH

Bu doküman, DinamoPlus üzerinde bir kullanıcının e-postalarını SMTP şifresi kullanmadan, güvenli OAuth 2.0 yöntemiyle (Google veya Microsoft hesabı üzerinden) gönderebilmesi için gerekli tanımların nasıl yapılacağını adım adım açıklar.

Kısaca Mantık Kullanıcının e-posta hesabı Google ise Google Cloud Console, Microsoft ise Azure / Entra tarafında bir "uygulama" (OAuth Client) oluşturulur. Buradan alınan CLIENT_ID, CLIENT_SC (Client Secret) ve Microsoft için ek olarak TENANT_ID değerleri, DinamoPlus içinde UDEFT13 tablosuna kaydedilir. Ardından "Mail Servisine Bağlanarak Token Üret" butonu ile tek seferlik yetki verilir.

1. Genel Bakış ve Gerekli Değerler

E-posta gönderim yöntemi kullanıcı bazında UDEF00 → E-Posta Tanımları ekranından seçilir. OAuth ile gönderimde şu iki yöntemden biri seçilebilir:

YöntemAçıklamaGerekli Değerler (UDEFT13)
GOAUTH
Google
Google / Gmail hesabı üzerinden Google OAuth 2.0 ile gönderim. CLIENT_ID
CLIENT_SC
MOAUTH
Microsoft
Microsoft 365 / Outlook hesabı üzerinden Microsoft OAuth 2.0 ile gönderim. CLIENT_ID
CLIENT_SC
TENANT_ID
REDIR_URI
KodAnlamıNereden Alınır?
CLIENT_IDUygulamanın (OAuth Client) genel kimliğiGoogle Cloud / Azure portal
CLIENT_SCClient Secret — uygulamanın gizli anahtarıGoogle Cloud / Azure portal
TENANT_IDMicrosoft kiracı (tenant) kimliği (sadece Microsoft)Azure / Entra portal
REDIR_URIYönlendirme (callback) adresi (Microsoft için zorunlu)https://sitename.com/home/MicrosoftOAuthCallback
Callback (Redirect) Adresi Uygulama oluştururken kullanılacak yönlendirme adresleri sabittir ve sisteme uygun olmalıdır:
  • Google: https://sitename.com/home/GoogleOAuthCallback
  • Microsoft: https://sitename.com/home/MicrosoftOAuthCallback
Not: sitename.com yerine kurumunuzun kullandığı alan adını yazınız.

2. Google (GOAUTH) Kurulumu

Google tarafında gönderim için yalnızca CLIENT_ID ve CLIENT_SC değerleri yeterlidir. Bu değerleri Google Cloud Console üzerinden aşağıdaki adımlarla oluşturacağız.

Ön Koşul Gönderim yapılacak Gmail / Google Workspace hesabına erişiminiz olmalı ve console.cloud.google.com adresine bu hesapla giriş yapabilmelisiniz.

2.1. Google Cloud Console'da Proje Oluşturma

  1. Google Cloud Console'a giriş yapın console.cloud.google.com adresine gidin. Üst menüden yeni bir proje oluşturun veya var olan bir projeyi seçin (örnekte proje adı TestDeployment).
  2. API'ler ve Servisler menüsüne girin Sol üstteki menüden APIs and services → OAuth consent screen yolunu izleyin.
    APIs and services menüsü
    Sol menü → APIs and services → OAuth consent screen
  1. "Get started" ile başlayın Google Auth Platform henüz yapılandırılmamışsa Get started butonuna tıklayın.
    Google auth platform not configured - Get started
    Google Auth Platform → Get started
  2. App Information (Uygulama Bilgileri) App name alanına bir uygulama adı girin (örn. d7pMail) ve User support email olarak bir e-posta seçin. Next ile devam edin.
    App Information ekranı
    App name ve User support email doldurulur
  3. Audience & Contact adımlarını tamamlayın Audience (hedef kitle) ve Contact Information adımlarını geçin. Son adımda "I agree to the Google API services user data policy" kutusunu işaretleyip Create butonuna basın.
    Finish - sözleşme onayı
    Sözleşme onaylanır ve "Create" ile yapılandırma tamamlanır
  4. Test kullanıcısı ekleyin (Testing modu) Uygulama "Testing" yayın durumundayken yalnızca Test users listesindeki hesaplar bağlanabilir. Sol menüden Audience sekmesine gidin, Test users bölümünde + Add users butonuna basın ve gönderim yapılacak e-posta adresini ekleyin.
    Audience - Test users - Add users
    Audience → Test users → + Add users ile gönderim yapılacak hesap eklenir
    Önemli Test users listesine eklenmeyen bir hesapla token üretmeye çalışırsanız Google "access blocked / bu uygulama doğrulanmadı" uyarısı verir ve bağlantı tamamlanamaz.

2.3. OAuth Client (İstemci) Oluşturma

  1. "Create OAuth client" butonuna tıklayın OAuth overview ekranında henüz bir client yoksa Create OAuth client butonuna tıklayın.
    Create OAuth client
    OAuth overview → Create OAuth client
  2. İstemci türünü ve adres bilgilerini girin Aşağıdaki alanları doldurun:
    Application typeWeb application
    NameÖrn. d7pMail
    Authorised JavaScript originshttps://sitename.com
    Authorised redirect URIshttps://sitename.com/home/GoogleOAuthCallback
    Create butonuna basın.
    Create OAuth client ID formu
    Web application, JavaScript origins ve redirect URI girilir
    Önemli Authorised redirect URIs alanı mutlaka /home/GoogleOAuthCallback ile bitmelidir. Aksi halde Google yönlendirme sonrası "redirect_uri_mismatch" hatası verir.
  3. Client ID'yi not alın İstemci oluşturulunca Client ID ekranda gösterilir. Bu değer daha sonra UDEFT13'te CLIENT_ID olarak kullanılacaktır. İsterseniz Download JSON ile indirebilirsiniz.
    OAuth client created - Client ID
    Oluşan Client ID kopyalanır

2.4. Client Secret Üretme

  1. Credentials menüsüne gidin Sol menüden APIs and services → Credentials yolunu izleyin.
    Credentials menüsü
    APIs and services → Credentials
  2. Mevcut istemciyi açın (veya yeni oluşturun) Oluşturduğunuz d7pMail istemcisine tıklayın. (Gerekirse Create credentials → OAuth client ID ile yeni de oluşturabilirsiniz.)
    Create credentials dropdown
    Create credentials → OAuth client ID seçeneği
  3. "Add secret" ile Client Secret oluşturun İstemci detay ekranında Client secrets bölümünden + Add secret butonuna basın. Üretilen gizli anahtar (Client secret) daha sonra UDEFT13'te CLIENT_SC olarak kullanılacaktır.
    Client secret - Add secret
    Client secrets → + Add secret
    Dikkat Client secret değeri yalnızca oluşturulduğu anda tam olarak görüntülenebilir. Bu değeri oluşturur oluşturmaz güvenli bir yere kopyalayın; sonradan tekrar görüntülenemez.

2.5. Değerleri DinamoPlus'a (UDEFT13) Girme

DinamoPlus'ta ilgili kullanıcı için Kullanıcı / Planlama Rol Tanımları → Özel Kullanıcı Değerleri (UDEFT13) sekmesine gidin ve aşağıdaki satırları ekleyin:

Özel Kullanıcı KoduÖzel Değer
CLIENT_IDGoogle'dan alınan Client ID
CLIENT_SCGoogle'dan alınan Client Secret
UDEFT13 Google değerleri
Google için UDEFT13'e CLIENT_ID ve CLIENT_SC eklenir, ardından "Kaydet" denir

2.6. Token Üretme (Hesabı Bağlama)

  1. E-Posta Tanımları ekranını açın Kullanıcının E-Posta Tanımları bölümünde "E-Posta Gönderebilir" kutusunu işaretleyin, E-Posta adresini girin ve Mail Gönderim Yöntemi olarak GOAUTH - Google Oauth 2.0 Yöntemi İle Gönderim seçin.
    E-Posta Tanımları - GOAUTH
    Mail Gönderim Yöntemi olarak GOAUTH seçilir
  2. "Mail Servisine Bağlanarak Token Üret" butonuna basın Açılan Google penceresinde gönderim yapılacak hesabı seçip izinleri onaylayın.
    Google hesap seçim ekranı
    Google hesabı seçilir ve uygulamaya izin verilir
  3. İşlemi tamamlayın Yetkilendirme başarılı olduğunda "Google OAuth token received." mesajı görüntülenir. Tamam butonuna basın; token sistem tarafından kaydedilir ve artık kullanıcı Google OAuth ile e-posta gönderebilir.
    Google OAuth token received
    Başarılı yetkilendirme sonrası görüntülenen onay ekranı
    Tamamlandı Google (GOAUTH) kurulumu bittikten sonra test amaçlı bir e-posta göndererek yapılandırmayı doğrulayın.

3. Microsoft (MOAUTH) Kurulumu

Microsoft (Microsoft 365 / Outlook) hesapları için gönderimde, Google'dan farklı olarak CLIENT_ID ve CLIENT_SC değerlerine ek olarak TENANT_ID değeri de gereklidir. Bu değerleri Azure Portal (Microsoft Entra ID) üzerinden aşağıdaki adımlarla oluşturacağız.

Özel Kullanıcı KoduÖzel Değer
CLIENT_IDAzure'dan alınan Application (client) ID
CLIENT_SCAzure'dan alınan Client Secret (secret value)
TENANT_IDAzure'dan alınan Directory (tenant) ID
REDIR_URIYönlendirme adresi: https://sitename.com/home/MicrosoftOAuthCallback
Ön Koşul portal.azure.com adresine, uygulama kaydı yapma yetkisine sahip bir hesapla giriş yapabilmelisiniz.

3.1. Microsoft Entra ID'ye Giriş

  1. Azure Portal'a giriş yapın portal.azure.com adresine gidin ve Azure services alanından Microsoft Entra ID hizmetine tıklayın.
    Azure services - Microsoft Entra ID
    Azure services → Microsoft Entra ID

3.2. Uygulama Kaydı (App registration)

  1. Yeni uygulama kaydı başlatın Entra ID Overview ekranında üstteki + Add menüsünden App registration seçeneğine tıklayın.
    Add - App registration
    Overview → + Add → App registration (bu ekranda Tenant ID de görüntülenir)
  2. Uygulama bilgilerini girin Açılan Register an application formunda:
    NameÖrn. DinamoERP Mail Service
    Supported account typesGenellikle Single tenant only (kurum içi kullanım)
    Redirect URITür: Web — Adres: https://sitename.com/home/MicrosoftOAuthCallback
    Alanları doldurup Register butonuna basın.
    Register an application formu
    Name, Supported account types ve Redirect URI (Web) girilir
    Önemli Redirect URI türü Web olmalı ve adres mutlaka /home/MicrosoftOAuthCallback ile bitmelidir.

3.3. Client Secret Oluşturma

  1. Certificates & secrets ekranına gidin Oluşturulan uygulamanın sol menüsünde Manage → Certificates & secrets yolunu izleyin.
    Certificates & secrets menüsü
    Manage → Certificates & secrets
  2. Yeni bir client secret ekleyin + New client secret ile bir açıklama (Description) girin ve süre (Expires) seçip Add butonuna basın.
    Add a client secret paneli
    Açıklama ve süre seçilerek client secret oluşturulur
    Dikkat Oluşan secret'in Value (değer) sütunundaki metni hemen kopyalayın. Bu değer yalnızca oluşturulduğu anda görüntülenir ve daha sonra tekrar görüntülenemez. UDEFT13'te CLIENT_SC olarak bu Value değeri kullanılır (Secret ID değil!).

3.4. API İzinlerini Tanımlama

  1. API permissions ekranına gidin ve izinleri ekleyin Sol menüden API permissions bölümüne girin. + Add a permission → Microsoft Graph → Delegated permissions yolundan aşağıdaki izinleri ekleyin:
    Mail.SendKullanıcı adına mail gönderme
    User.ReadOturum açma ve kullanıcı profilini okuma
    Ardından Grant admin consent for <kurum> butonuna basarak yönetici onayını verin; Status sütununun yeşil (Granted) olduğundan emin olun.
    API permissions - Mail.Send, User.Read
    Microsoft Graph → Mail.Send ve User.Read izinleri eklenir ve onaylanır

3.5. Gerekli Bilgileri Toplama

Uygulamanın Overview sayfasındaki Essentials bölümünden aşağıdaki değerleri kopyalayın:

Azure'daki AlanUDEFT13 Kodu
Application (client) ID (Overview)CLIENT_ID
Directory (tenant) ID (Overview)TENANT_ID
Client Secret Value (3.3'te oluşturulan)CLIENT_SC
Overview - Application (client) ID, Directory (tenant) ID
Overview → Essentials: Application (client) ID ve Directory (tenant) ID buradan alınır

3.6. Değerleri DinamoPlus'a (UDEFT13) Girme

İlgili kullanıcı için Kullanıcı / Planlama Rol Tanımları → Özel Kullanıcı Değerleri (UDEFT13) sekmesine gidin ve aşağıdaki satırları ekleyip kaydedin:

Özel Kullanıcı KoduÖzel Değer
CLIENT_IDApplication (client) ID
CLIENT_SCClient Secret Value
TENANT_IDDirectory (tenant) ID
REDIR_URIhttps://sitename.com/home/MicrosoftOAuthCallback
Önemli Microsoft için REDIR_URI satırının UDEFT13'e girilmesi zorunludur ve değeri, Azure uygulama kaydındaki Redirect URI ile birebir aynı olmalıdır (https://sitename.com/home/MicrosoftOAuthCallback).
UDEFT13 Microsoft değerleri
Microsoft için UDEFT13'e CLIENT_ID, CLIENT_SC, TENANT_ID ve REDIR_URI satırları eklenir

3.7. Token Üretme (Hesabı Bağlama)

  1. E-Posta Tanımları'nda MOAUTH seçin Kullanıcının E-Posta Tanımları bölümünde "E-Posta Gönderebilir" kutusunu işaretleyin, E-Posta adresini girin ve Mail Gönderim Yöntemi olarak MOAUTH - Microsoft Oauth 2.0 Yöntemi İle Gönderim seçin.
  2. "Mail Servisine Bağlanarak Token Üret" butonuna basın Açılan Microsoft penceresinde gönderim yapılacak hesabı seçip izinleri onaylayın. Yetkilendirme başarılı olduğunda pencere kapanır ve token sistem tarafından kaydedilir.
    Tamamlandı Microsoft (MOAUTH) kurulumu bittikten sonra test amaçlı bir e-posta göndererek yapılandırmayı doğrulayın.

4. Sık Karşılaşılan Sorunlar

Hata / BelirtiOlası Neden ve Çözüm
redirect_uri_mismatch Google/Azure'daki redirect URI ile sistemdeki adres birebir aynı değil. Adresin sonunun /home/GoogleOAuthCallback (veya Microsoft için /home/MicrosoftOAuthCallback) olduğundan ve alan adının doğru olduğundan emin olun.
"Authorization code cannot be empty." Yetkilendirme penceresi iptal edilmiş veya izin verilmemiş. "Token Üret" adımını tekrar başlatıp hesabı seçerek izinleri onaylayın.
Token üretildi ama mail gitmiyor UDEFT13'teki CLIENT_ID / CLIENT_SC (Microsoft için ayrıca TENANT_ID) değerlerinin boşluksuz ve doğru kopyalandığını, E-Posta adresinin gönderim yapılan hesapla aynı olduğunu kontrol edin.
Google "access blocked" / test kullanıcısı uyarısı OAuth consent screen "Testing" modunda ise gönderim yapılacak hesabın Test users listesine eklenmesi gerekir.

Bu doküman DinamoPlus / d7p e-posta OAuth kurulumu içindir. — Google (GOAUTH) ve Microsoft (MOAUTH) bölümleri tamamlanmıştır.