> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Email

> E-posta SMTP bağlantılarını yapılandırır ve yönetir. TLS destekli SMTP üzerinden bildirim, alarm ve toplu e-posta gönderim işlemlerini gerçekleştirebilir, ortam bazlı ayarlar yapabilir ve farklı hizmet sağlayıcılarla uyumluluk sağlar

## Genel Bakış

<AccordionGroup>
  <Accordion title="Amacı Nedir?">
    <CardGroup cols={2}>
      <Card title="Güvenli Erişim" icon="shield">
        Bu Connection (Bağlantı), Apinizer üzerinde çalışan entegrasyon adımlarının SMTP sunucularına güvenli
        şekilde erişmesini sağlar.
      </Card>

      <Card title="Merkezi Yönetim" icon="gear">
        Uyarı, alarm, bildirim veya toplu e-posta senaryolarında tekil bir yapılandırma noktasından
        yönetilebilirlik sunar.
      </Card>

      <Card title="Gelişmiş Parametreler" icon="slider">
        TLS, kimlik doğrulama ve özel SMTP başlıkları gibi gelişmiş parametreler sayesinde farklı hizmet
        sağlayıcılarla uyumluluk sağlar.
      </Card>

      <Card title="Ortam Bazlı Ayarlar" icon="code-branch">
        Ortam bazlı ayarlar sayesinde Development/Test/Production ayrımlarında tekrar eden tanımları azaltır.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

<AccordionGroup>
  <Accordion title="Çalışma Prensibi">
    <CardGroup cols={2}>
      <Card title="Bağlantı Başlatma" icon="play">
        Integration Flow veya Connector içerisinden SMTP tipindeki Connection talep edildiğinde, sistem yapılandırılmış connection parametrelerini okur.
      </Card>

      <Card title="Connection Pool Yönetimi" icon="layer-group">
        E-posta Connection'ları istek başına açılan hafif oturumlarla çalışır; pool devre dışıdır ancak worker kuyrukları eşzamanlı talepleri sıralar.
      </Card>

      <Card title="Kimlik Doğrulama" icon="shield">
        Auth toggle açık ise kullanıcı adı/şifre ile, aksi durumda anonim SMTP erişimiyle doğrulama yapılır.
      </Card>

      <Card title="Veri İletişimi" icon="arrows-rotate">
        TLS/STARTTLS desteğiyle SMTP üzerinden MIME mesajları ve ek başlıklar gönderilir.
      </Card>

      <Card title="Bağlantı Yönetimi" icon="gear">
        İşlem tamamlandıktan sonra oturum kapatılır ve worker yeni istekler için temiz duruma döner.
      </Card>

      <Card title="Hata Yönetimi" icon="triangle-exclamation">
        Bağlantı hatası, timeout veya authentication hatası durumunda Apinizer log'larına detay yazılır, kullanıcıya hata mesajı ve önerilen aksiyonlar bildirilir.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kullanım Alanları">
    <CardGroup cols={2}>
      <Card title="Otomatik Bildirimler" icon="bell">
        Sistem olayları veya monitoring alarmları için otomatik e-posta bildirimleri
      </Card>

      <Card title="Güvenli Posta Kutuları" icon="envelope">
        Kimlik sağlayıcılardan gelen onay kodlarını gönderen güvenli posta kutuları
      </Card>

      <Card title="PDF Ekli İletişim" icon="file-pdf">
        Fatura, dekont veya rapor gibi PDF ekli outgoing iletişim senaryoları
      </Card>

      <Card title="Periyodik Raporlar" icon="clock">
        Scheduled Job'lar üzerinden periyodik durum/sağlık raporlarının paylaşımı
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Teknik Özellikler ve Yetenekler

<AccordionGroup>
  <Accordion title="Temel Özellikler">
    <CardGroup cols={2}>
      <Card title="STARTTLS Desteği" icon="shield">
        `enableStartTls` togglesu ile SMTP oturumlarını TLS'e yükseltir.
      </Card>

      <Card title="Koşullu Kimlik Doğrulama" icon="key">
        `auth` aktif olduğunda kullanıcı adı/parola zorunlu hale gelir ve credential doğrulaması yapılır.
      </Card>

      <Card title="Gönderen Kimliği Yönetimi" icon="user">
        `from` alanı ile tüm mesajlarda kullanılacak gönderen adresi merkezi olarak tanımlanır.
      </Card>

      <Card title="Ortam Bazlı Yapılandırma" icon="code-branch">
        Her ortam (Development, Test, Production) için ayrı connection parametreleri tanımlama imkanı.
      </Card>

      <Card title="Enable/Disable Kontrolü" icon="toggle-on">
        Connection'ı aktif veya pasif hale getirme (enable/disable toggle). Pasif durumda bağlantı kullanılamaz ancak yapılandırması saklanır.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İleri Düzey Özellikler">
    <CardGroup cols={2}>
      <Card title="Ek SMTP Özellikleri" icon="slider">
        `additionalProperties` ile sunucuya özel header veya protokol parametreleri eklenebilir.
      </Card>

      <Card title="Adres Bazlı Test Gönderimi" icon="flask">
        `addressToTest` alanı ve Test Mail butonu ile gerçek gönderim öncesi doğrulama yapılır.
      </Card>

      <Card title="Worker'a Dağıtım" icon="server">
        `deployToWorker` bayrağı ile Connection'ın gateway veya worker süreçlerine dağıtımı kontrol edilir.
      </Card>

      <Card title="Connection Test Özelliği" icon="check-circle">
        "Test Connection" butonu ile bağlantı parametrelerini kaydetmeden önce doğrulama imkanı.
      </Card>

      <Card title="Export/Import Özelliği" icon="file-export">
        Connection yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
      </Card>

      <Card title="Connection Monitoring" icon="chart-line">
        Bağlantı sağlığı, pool durumu ve performans metriklerini izleme.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Connection Parametreleri

<AccordionGroup>
  <Accordion title="Zorunlu Parametreler">
    <CardGroup cols={2}>
      <Card title="Name" icon="tag">
        **Açıklama:** Connection adı (benzersiz olmalı)\
        **Örnek Değer:** `Production_EmailSMTP`\
        **Notlar:** Boşlukla başlamaz, özel karakterler kullanılmamalı
      </Card>

      <Card title="Host" icon="server">
        **Açıklama:** SMTP sunucusunun FQDN/IP bilgisi\
        **Örnek Değer:** `smtp.mailprovider.com`\
        **Notlar:** 255 karakter sınırı
      </Card>

      <Card title="Port" icon="network-wired">
        **Açıklama:** SMTP port numarası\
        **Örnek Değer:** `587`\
        **Notlar:** TLS için 587, SSL için 465 önerilir
      </Card>

      <Card title="From" icon="envelope">
        **Açıklama:** Mesajlarda kullanılacak gönderen adresi\
        **Örnek Değer:** `noreply@company.com`\
        **Notlar:** Geçerli e-posta formatı olmalı
      </Card>

      <Card title="Default Encoding" icon="language">
        **Açıklama:** Gövde/başlık karakter seti\
        **Örnek Değer:** `UTF-8`\
        **Notlar:** UI'da varsayılan olarak UTF-8 gelir
      </Card>

      <Card title="Username (Auth açık)" icon="user">
        **Açıklama:** SMTP hesabı kullanıcı adı\
        **Örnek Değer:** `alert.bot`\
        **Notlar:** Auth toggle açıkken zorunlu
      </Card>

      <Card title="Password (Auth açık)" icon="lock">
        **Açıklama:** SMTP hesabı şifresi\
        **Örnek Değer:** `••••••`\
        **Notlar:** Auth toggle açıkken zorunlu
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İsteğe Bağlı Parametreler">
    <CardGroup cols={2}>
      <Card title="Description" icon="file-lines">
        **Açıklama:** Connection amacı için açıklama alanı\
        **Varsayılan Değer:** Boş\
        **Önerilen Değer:** Örnek: Prod alarm mail kanalı
      </Card>

      <Card title="Enable STARTTLS" icon="shield">
        **Açıklama:** TLS'e yükseltme togglesu\
        **Varsayılan Değer:** false\
        **Önerilen Değer:** TLS zorunlu ortamlarda true
      </Card>

      <Card title="Auth" icon="key">
        **Açıklama:** Kimlik doğrulama gereksinimi\
        **Varsayılan Değer:** false\
        **Önerilen Değer:** Çoğu sağlayıcıda true
      </Card>

      <Card title="AddressToTest" icon="flask">
        **Açıklama:** Test mailinin gönderileceği adres\
        **Varsayılan Değer:** Boş\
        **Önerilen Değer:** Dev ekip dağıtım listesi
      </Card>

      <Card title="Additional Properties" icon="slider">
        **Açıklama:** SMTP sağlayıcısına özel key/value seti\
        **Varsayılan Değer:** Boş array\
        **Önerilen Değer:** `mail.smtp.connectiontimeout=15000` gibi
      </Card>

      <Card title="DeployToWorker" icon="server">
        **Açıklama:** Worker üzerinde dağıtım seçeneği
        **Varsayılan Değer:** true
        **Önerilen Değer:** Yüksek trafik senaryolarında true tutulur
      </Card>

      <Card title="SSL Kullan (Use SSL)" icon="shield-halved">
        **Açıklama:** SMTP bağlantısında SSL/TLS kullanılıp kullanılmayacağını belirler
        **Varsayılan Değer:** false
        **Önerilen Değer:** Production ortamında true
      </Card>

      <Card title="Sertifika (Certificate)" icon="certificate">
        **Açıklama:** SSL aktifken kullanılacak sertifika seçimi
        **Varsayılan Değer:** Boş (sistem sertifikaları kullanılır)
        **Önerilen Değer:** Self-signed sunucularda ilgili sertifika seçilmeli
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Timeout ve Connection Pool Parametreleri">
    <CardGroup cols={2}>
      <Card title="Connection Timeout" icon="clock">
        **Açıklama:** Bağlantı kurulması için maksimum bekleme süresi\
        **Varsayılan:** 30000\
        **Min:** 5000 | **Max:** 60000\
        **Birim:** milisaniye
      </Card>

      <Card title="Request Timeout" icon="hourglass">
        **Açıklama:** İstek yanıtı için maksimum bekleme süresi\
        **Varsayılan:** 60000\
        **Min:** 10000 | **Max:** 120000\
        **Birim:** milisaniye
      </Card>

      <Card title="Pool Size" icon="layer-group">
        **Açıklama:** Connection pool'daki maksimum bağlantı sayısı\
        **Varsayılan:** 1\
        **Min:** 1 | **Max:** 5\
        **Birim:** adet
      </Card>

      <Card title="Mail Retry Delay" icon="repeat">
        **Açıklama:** Başarısız SMTP denemeleri arasındaki bekleme\
        **Varsayılan:** 2000\
        **Min:** 1000 | **Max:** 10000\
        **Birim:** milisaniye
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Kullanım Senaryoları

<CardGroup cols={2}>
  <Card title="Alarm Bildirimleri" icon="bell">
    **Durum:** Monitoring sistemi kritik alarm üretir\
    **Çözüm:** Host=smtp.ops.local, From=[alerts@company.com](mailto:alerts@company.com), Auth=true\
    **Beklenen Davranış:** Alıcı listesine TLS üzerinden alarm maili gider
  </Card>

  <Card title="Kullanıcı Onay Kodları" icon="key">
    **Durum:** Kimlik doğrulama sürecinde OTP gönderilir\
    **Çözüm:** Port=587, Enable STARTTLS=true, DeployToWorker=true\
    **Beklenen Davranış:** OTP mesajı saniyeler içinde iletilir
  </Card>

  <Card title="Finansal Raporlama" icon="file-pdf">
    **Durum:** PDF ekli aylık raporlar gönderilir\
    **Çözüm:** AdditionalProperties ile `mail.smtp.writetimeout=120000`\
    **Beklenen Davranış:** Büyük ekler zaman aşımına takılmadan gönderilir
  </Card>

  <Card title="Test Ortamı Smoke Test" icon="flask">
    **Durum:** Test ortamı senaryoları için dummy adres\
    **Çözüm:** Environment=Test, Auth=false, From=[test@dummy.local](mailto:test@dummy.local)\
    **Beklenen Davranış:** Mesajlar sandbox SMTP'ye düşer
  </Card>

  <Card title="Dış Servis Failover" icon="rotate">
    **Durum:** Birincil SMTP down olduğunda ikincil devreye girer\
    **Çözüm:** Host=primary, AdditionalProperties.failover=smtp2\
    **Beklenen Davranış:** Akış kesilmeden ikinci host kullanılır
  </Card>

  <Card title="Toplu Kampanya" icon="envelope">
    **Durum:** Marketing kampanyasında yüksek hacim\
    **Çözüm:** Pool Size=5, DeployToWorker=true, Description=Campaign\
    **Beklenen Davranış:** Worker'lar yükü bölerek throughput artırır
  </Card>
</CardGroup>

## Connection Yapılandırma

### Yeni E-Posta Connection Oluşturma

<img src="https://mintcdn.com/apinizer/YX1NcEKlSBeHefxE/images/yonetici/baglantilar/email-new-variable.png?fit=max&auto=format&n=YX1NcEKlSBeHefxE&q=85&s=8365ed54ebbc555caf206f1d40520e8e" alt="Image 2024 9 9 15 35 35 Pn" width="1000" className="mr-auto" data-path="images/yonetici/baglantilar/email-new-variable.png" />

#### Yapılandırma Adımları

<Steps>
  <Step title="Oluşturma Sayfasına Gitme">
    * Apinizer ana ekranında sol menüden **Connection** seçeneğine tıklayın.
    * Açılan alt menüden **E-Posta** seçeneğini seçin.
    * E-Posta Connection listesi sayfası açılır.
    * Sayfanın sağ üst köşesinde bulunan **\[+ Create]** butonuna tıklayın.
    * Yeni E-Posta Connection oluşturma formu açılır.
  </Step>

  <Step title="Temel Bilgileri Girme">
    **Enable Status (Aktif Durumu) Ayarlama:**

    * Formun üst kısmında **Enable Status** toggle'ını bulun.
    * Toggle'ı **Aktif** konumuna getirin (varsayılan olarak aktif gelir).
    * Connection'ı pasif yapmak isterseniz toggle'ı **Pasif** konumuna getirin.
    * Pasif connection'lar Integration Flow'larda kullanılamaz ancak yapılandırmaları saklanır.

    **Name (İsim) - Zorunlu Alan:**

    * **Name** alanına benzersiz bir connection adı girin.
    * İsim örnekleri: `Production_EmailSMTP`, `Test_EmailConnection`, `Dev_SMTP_Alerts`
    * İsim kuralları:
    * Boşlukla başlamamalı
    * Özel karakterler kullanılmamalı (önerilen: harf, rakam, alt çizgi)
    * Maksimum 255 karakter
    * İsim yazdıkça sistem otomatik kontrol eder:
    * Yeşil tik işareti: İsim kullanılabilir
    * Kırmızı çarpı işareti: İsim zaten mevcut, farklı bir isim seçin

    **Description (Açıklama) - İsteğe Bağlı:**

    * **Description** alanına connection'ın amacını açıklayan bir metin girin.
    * Örnek açıklamalar:
    * "Alarmlar için SMTP kanalı"
    * "Production ortamı e-posta bildirimleri"
    * "Test ortamı için dummy SMTP bağlantısı"
    * Maksimum 1000 karakter sınırı vardır.
    * Bu alan boş bırakılabilir.

    <Info>
      Sayfanın üst kısmındaki işlem butonları alanında, **\[\<> Variable]** butonunu kullanarak dinamik değer seçebilir, Global variable ifadeleri sayesinde connection parametrelerini sabit değer yerine değişken tabanlı yönetebilirsiniz. Detaylı bilgi için [Dinamik Değişkenler](/tr/concepts/temel-kavramlar/dinamik-degiskenler) sayfasını inceleyebilirsiniz.
    </Info>
  </Step>

  <Step title="Environment (Ortam) Seçimi">
    * **Environment** dropdown menüsünü bulun.
    * Dropdown menüyü açın ve aşağıdaki seçeneklerden birini seçin:
    * **Development**: Geliştirme ortamı için
    * **Test**: Test ortamı için
    * **Production**: Üretim ortamı için
    * Her ortam için farklı connection parametreleri tanımlanabilir.
    * Ortam seçimi, connection'ın hangi ortamda aktif olacağını belirler.
    * Aynı isimde connection'lar farklı ortamlar için ayrı ayrı oluşturulabilir.
  </Step>

  <Step title="SMTP Sunucu Bilgileri">
    **Host (Sunucu Adresi) - Zorunlu:**

    * **Host** alanına SMTP sunucusunun adresini girin.
    * Host formatı:
    * FQDN (Fully Qualified Domain Name): `smtp.mailprovider.com`
    * IP adresi: `192.168.1.100`
    * Maksimum 255 karakter sınırı vardır.
    * SMTP sağlayıcınızın dokümantasyonundan doğru host adresini alın.

    **Port (Port Numarası) - Zorunlu:**

    * **Port** alanına SMTP port numarasını girin.
    * Yaygın port numaraları:
    * **25**: Standart SMTP (genellikle şifrelenmemiş)
    * **465**: SSL/TLS ile SMTP (SMTPS)
    * **587**: STARTTLS ile SMTP (önerilen)
    * SMTP sağlayıcınızın dokümantasyonundan doğru port numarasını kontrol edin.
    * Port numarası 1-65535 arasında olmalıdır.

    **Enable STARTTLS Ayarlama:**

    * **Enable STARTTLS** toggle'ını bulun.
    * SMTP sağlayıcınız TLS/STARTTLS gerektiriyorsa toggle'ı **Aktif** konumuna getirin.
    * Port 587 kullanıyorsanız genellikle STARTTLS aktif olmalıdır.
    * Port 465 kullanıyorsanız genellikle STARTTLS gerekmez (SSL/TLS doğrudan kullanılır).
    * Sağlayıcı dokümantasyonunu kontrol ederek doğru ayarı yapın.

    <Tip>
      Port 587 ve STARTTLS kombinasyonu çoğu modern SMTP sağlayıcısı için önerilir.
    </Tip>

    **SSL Kullan (Use SSL) Ayarlama:**

    * **SSL Kullan** toggle'ını bulun.
    * SMTP sunucunuz SSL/TLS gerektiriyorsa toggle'ı **Aktif** konumuna getirin.
    * SSL etkinleştirildiğinde, isteğe bağlı olarak bir **sertifika** seçilebilir.
    * Sertifika seçilmezse sistem varsayılan JVM sertifikaları kullanılır.
    * Self-signed sertifika kullanan SMTP sunucuları için ilgili sertifikayı [Gizlilik Yönetimi → Sertifikalar](/tr/admin/secrets-management/sertifikalar) ekranından tanımlayıp burada seçebilirsiniz.
  </Step>

  <Step title="Gönderen ve Kimlik Doğrulama">
    **From (Gönderen Adresi) - Zorunlu:**

    * **From** alanına gönderen e-posta adresini girin.
    * Format: Geçerli e-posta adresi formatı olmalıdır.
    * Örnekler: `noreply@company.com`, `alerts@company.com`, `test@dummy.local`
    * Bu adres tüm gönderilen e-postalarda gönderen olarak görünecektir.
    * DNS/SPF kayıtlarınızın bu adresi desteklediğinden emin olun.

    **Auth (Kimlik Doğrulama) Ayarlama:**

    * **Auth** toggle'ını bulun.
    * SMTP sunucunuz kimlik doğrulama gerektiriyorsa toggle'ı **Aktif** konumuna getirin.
    * Çoğu modern SMTP sağlayıcısı kimlik doğrulama gerektirir.

    **Username (Kullanıcı Adı) - Auth açıkken zorunlu:**

    * **Auth** toggle'ı aktifse **Username** alanı görünür hale gelir.
    * SMTP hesabınızın kullanıcı adını girin.
    * Örnekler: `alert.bot`, `smtp.user`, `noreply@company.com`
    * Bazı sağlayıcılarda kullanıcı adı tam e-posta adresi olabilir.
    * SMTP sağlayıcınızın dokümantasyonundan doğru formatı kontrol edin.

    **Password (Şifre) - Auth açıkken zorunlu:**

    * **Auth** toggle'ı aktifse **Password** alanı görünür hale gelir.
    * SMTP hesabınızın şifresini girin.
    * Şifre güvenlik nedeniyle maskelenmiş görünecektir.
    * Şifreyi görmek için göz ikonuna tıklayabilirsiniz.
    * Hassas bilgiler için secret manager kullanımı önerilir.
  </Step>

  <Step title="Timeout ve Connection Pool Ayarları">
    * UI'de doğrudan timeout ve pool ayarları için alan bulunmaz.
    * Bu ayarları yapmak için **Additional Properties** bölümünü kullanın (Adım 7'de detaylı).
    * Yaygın timeout ayarları:
    * `mail.smtp.connectiontimeout=30000` (30 saniye)
    * `mail.smtp.timeout=60000` (60 saniye)
    * `mail.smtp.writetimeout=120000` (120 saniye - büyük ekler için)
    * Connection pool ayarları genellikle varsayılan değerlerle çalışır.
    * Özel gereksinimler için Additional Properties'e ekleyin.
  </Step>

  <Step title="Ek Özellikler ve Güvenlik Ayarları">
    **Additional Properties (Ek Özellikler) - İsteğe Bağlı:**

    * **Additional Properties** bölümünü bulun.
    * SMTP sağlayıcınıza özel parametreler eklemek için bu bölümü kullanın.
    * Key-Value formatında parametreler ekleyin:
    * Örnek: `mail.smtp.connectiontimeout=15000`
    * Örnek: `mail.smtp.writetimeout=120000`
    * Yaygın kullanılan özellikler:
    * `mail.smtp.connectiontimeout`: Bağlantı timeout'u (milisaniye)
    * `mail.smtp.timeout`: Genel timeout (milisaniye)
    * `mail.smtp.writetimeout`: Yazma timeout'u (milisaniye)
    * `mail.smtp.auth.mechanisms`: Kimlik doğrulama mekanizması
    * Her satıra bir key-value çifti ekleyin.
    * SMTP sağlayıcınızın dokümantasyonundan desteklenen özellikleri kontrol edin.

    **AddressToTest (Test Adresi) - İsteğe Bağlı:**

    * **AddressToTest** alanını bulun.
    * Test mail gönderimi için kullanılacak e-posta adresini girin.
    * Bu adres, **Test Connection** butonuna tıklandığında test mailinin gönderileceği adrestir.
    * Örnek: `dev-team@company.com`, `test@dummy.local`
    * Bu alan boş bırakılabilir, ancak test yapmak için doldurulması önerilir.

    **DeployToWorker Ayarlama:**

    * **DeployToWorker** toggle'ını bulun.
    * Yüksek trafikli senaryolarda toggle'ı **Aktif** konumuna getirin.
    * Worker üzerinde dağıtım, yük dağılımı ve performans için önerilir.
    * Varsayılan olarak aktif gelir.
  </Step>

  <Step title="Test Connection (Bağlantı Testi)">
    * Formun alt kısmında veya sağ üst köşede **\[Test Connection]** butonunu bulun.
    * Butona tıklayın.
    * Sistem bağlantı parametrelerini test eder:
    * SMTP sunucusuna bağlantı kurulur
    * Kimlik doğrulama yapılır (Auth aktifse)
    * STARTTLS handshake yapılır (aktifse)
    * Test maili gönderilir (AddressToTest doluysa)
    * Test sonucu:
    * **Başarılı**: Yeşil onay mesajı görüntülenir, "Connection test successful" gibi bir mesaj
    * **Başarısız**: Kırmızı hata mesajı görüntülenir, hata detayları gösterilir
    * Hata durumunda:
    * Hata mesajını okuyun
    * İlgili parametreleri kontrol edin (Host, Port, Username, Password)
    * Firewall ve network ayarlarını kontrol edin
    * SMTP sağlayıcı dokümantasyonunu kontrol edin
    * Test başarılı olana kadar parametreleri düzeltin ve tekrar test edin.
  </Step>

  <Step title="Kaydetme ve Deploy Etme">
    * Tüm zorunlu alanların doldurulduğundan emin olun.
    * Test connection'ın başarılı olduğunu doğrulayın (önerilir).
    * Formun sağ üst köşesinde bulunan **\[Save and Deploy]** butonuna tıklayın.
    * Sistem connection'ı kaydeder ve seçilen ortama deploy eder.
    * Başarılı kayıt sonrası:
    * Connection listesi sayfasına yönlendirilirsiniz
    * Yeni connection listede görünür
    * Connection **Enabled** durumda olur
    * Integration Flow ve Connector adımlarında kullanılabilir hale gelir

    **Kontrol Listesi (Kaydetmeden Önce):**

    * Name alanı benzersiz ve geçerli
    * Host ve Port alanları doldurulmuş
    * From adresi geçerli e-posta formatında
    * Auth aktifse Username ve Password doldurulmuş
    * Environment seçilmiş
    * Test Connection başarılı (önerilir)
    * Zorunlu alanların hepsi doldurulmuş

    **Sonuç:**

    * Connection başarıyla oluşturulur ve kaydedilir
    * Seçilen ortamda aktif hale gelir
    * Integration Flow ve Connector adımlarında connection seçimi yapılabilir
    * Connection listesinde görüntülenir ve yönetilebilir

    <Check>
      Connection başarıyla oluşturuldu! Artık Integration Flow ve Connector adımlarında kullanabilirsiniz.
    </Check>
  </Step>
</Steps>

### Connection'ı Silme

Connection'ı silmek için:

<CardGroup cols={2}>
  <Card title="Yöntem 1: Liste Ekranından" icon="list">
    * Connection listesinde satır sonundaki **⋮** menüsünden **Delete** seçeneğini tıklayın.
    * Onay dialogunda silme işlemini onaylayın.
  </Card>

  <Card title="Silme İpuçları" icon="info-circle">
    **Silmeden Önce Kontrol Edin:**

    * Integration Flow veya Connector adımlarında kullanılıyor olabilir.
    * Gerekirse alternatif bir connection atayın.
    * Silmeden önce Export ile yedek alın.
  </Card>

  <Card title="Alternatif: Deaktif Etme" icon="toggle-off">
    * Silmek yerine connection'ın aktif durumunu pasif hale getirin.
    * Connection pasif olur ancak silinmez.
    * Gerektiğinde aktif hale getirerek yeniden kullanabilirsiniz.
  </Card>
</CardGroup>

### Connection'ı Dışa/İçe Aktarma

<Info>
  Bu adımda kullanıcı, mevcut connection'ları yedekleme, farklı ortamlara taşıma veya paylaşma amacıyla dışa aktarabilir (export) ya da daha önce dışa aktarılmış bir connection'ı tekrar içe aktarabilir (import). Bu işlem, sürüm yönetimi, test ve üretim ortamları arasında geçiş veya ekipler arası paylaşım süreçlerinde veri bütünlüğünü korumak için kullanılır.
</Info>

<AccordionGroup>
  <Accordion title="Dışa Aktarma (Export)">
    <CardGroup cols={2}>
      <Card title="Yöntem 1: Liste Ekranından" icon="list">
        * Connection listesinde satır sonundaki **⋮** menüsünden **Export** seçeneğini tıklayın.
        * ZIP dosyası otomatik olarak indirilir.
      </Card>

      <Card title="Dosya Formatı" icon="file-zipper">
        Format: `{Date}-email-connection-{ConnectionName}-export.zip`\
        Örnek: `13 Nov 2025-email-connection-Production_EmailSMTP-export.zip`
      </Card>

      <Card title="ZIP İçeriği" icon="folder-open">
        * Connection JSON dosyası
        * Metadata bilgileri
        * Bağımlılık bilgileri (örneğin sertifikalar, key store)
      </Card>

      <Card title="Kullanım Alanları" icon="list-check">
        * Yedekleme
        * Ortamlar arası taşıma (Test → Prod)
        * Versiyonlama
        * Ekip veya proje bazlı paylaşım
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İçe Aktarma (Import)">
    <CardGroup cols={2}>
      <Card title="İçe Aktarma Adımları" icon="upload">
        * Ana listede **\[Import E-Posta]** butonuna tıklayın.
        * İndirilen ZIP dosyasını seçin.
        * Sistem kontrolleri: Format geçerli mi? İsim çakışması var mı? Bağımlılıklar mevcut mu?
        * Ardından **\[Import]** butonuna tıklayın.
      </Card>

      <Card title="İçe Aktarma Senaryoları" icon="info-circle">
        **Senaryo 1: İsim Çakışması** → Eski connection'ın üzerine yazın veya yeni bir isimle oluşturun.

        **Senaryo 2: Eksik Bağımlılıklar** → Eksik sertifikaları veya key store'ları önce oluşturun veya import sırasında çıkarın.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Connection'ın Kullanım Alanları

<CardGroup cols={2}>
  <Card title="Connection Oluşturma ve Aktif Etme" icon="plus-circle">
    **Adımlar:**

    1. Connection'ı oluşturun.
    2. Test Connection ile bağlantıyı doğrulayın.
    3. Save and Deploy ile kaydedin ve etkinleştirin.
    4. Connection'ın Enabled durumda olduğundan emin olun.
  </Card>

  <Card title="Integration / Connector Adımlarında Kullanım" icon="plug">
    E-posta gönderimi gerektiren adımlarda connection seçilir. Örnek: "Send Email", "Email Notification", "Email Alert" gibi adımlar. Bağlantı seçimi bu adımların yapılandırmasında yer alan Connection alanından yapılır.
  </Card>

  <Card title="Scheduled Job Kullanımı" icon="clock">
    Zamanlanmış görevlerde (ör. belirli aralıklarla e-posta gönderme, raporlama vb.) bağlantı seçilerek SMTP sunucularına erişim sağlanır. Connection değiştiğinde, job çalışma davranışı da buna göre güncellenir.
  </Card>

  <Card title="Test Amaçlı Kullanım" icon="flask">
    Connection Test özelliği ile bağlantının doğruluğu Integration Flow'dan bağımsız olarak kontrol edilebilir. Bu test hata ayıklama sürecinde kritik önem taşır.
  </Card>
</CardGroup>

## Best Practices

<AccordionGroup>
  <Accordion title="Yapılması Gerekenler ve En İyi Uygulamalar">
    <CardGroup cols={2}>
      <Card title="SMTP Sağlayıcı Yönetimi" icon="server">
        **Kötü:** Aynı Connection ile farklı sağlayıcıları yönetmek.\
        **İyi:** Her sağlayıcı için ayrı Connection açmak.\
        **En İyi:** Ortam + sağlayıcı kombinasyonunu isimde belirtmek (Prod\_SendGrid)
      </Card>

      <Card title="Gönderen Kimliği" icon="envelope">
        **Kötü:** `from` alanını rastgele adreslerle değiştirmek.\
        **İyi:** İş süreçlerine göre anlamlı adresler kullanmak.\
        **En İyi:** DMARC/SPF kayıtlarıyla uyumlu kurumsal alias tanımlamak
      </Card>

      <Card title="Credential Yaşam Döngüsü" icon="key">
        **Kötü:** Paylaşılan şifreleri hiç güncellememek.\
        **İyi:** Manuel periyotlarla döndürmek.\
        **En İyi:** Secret manager üzerinden rotasyon otomasyonu kurmak
      </Card>

      <Card title="Ek Parametre Yönetimi" icon="slider">
        **Kötü:** `additionalProperties` alanını boş bırakmak.\
        **İyi:** Sadece ihtiyaç duyulan anahtarları eklemek.\
        **En İyi:** Sağlayıcı dökümantasyonundaki tüm zorunlu SMTP property'lerini kayıt altına almak
      </Card>

      <Card title="Ortam Yönetimi" icon="code-branch">
        **Kötü:** Tüm ortamlarda aynı connection parametrelerini kullanmak.\
        **İyi:** Her ortam için ayrı connection oluşturmak.\
        **En İyi:** Environment seçeneğini kullanarak tek connection'da tüm ortamları yönetmek, ortamlar arası geçişte sadece environment değiştirmek
      </Card>

      <Card title="Connection Test" icon="flask">
        **Kötü:** Connection'ı test etmeden kaydetmek ve deploy etmek.\
        **İyi:** Kaydetmeden önce Test Connection ile doğrulamak.\
        **En İyi:** Her parametre değişikliğinden sonra test etmek, production'a geçmeden önce test ortamında tam entegrasyon testi yapmak
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Güvenlik En İyi Uygulamaları">
    <CardGroup cols={2}>
      <Card title="SMTP Kimlik Doğrulama" icon="shield">
        Auth açıkken kullanıcı adı/parolayı sadece gerekli roller görebilmeli. Şifreleri UI üzerinden kopyalayıp paylaşmayın
      </Card>

      <Card title="Rol Bazlı Erişim" icon="user-shield">
        `enable/disable` yetkilerini sadece e-posta altyapısından sorumlu ekiplerle sınırlandırın; yanlış yapılandırma tüm bildirimleri durdurabilir
      </Card>

      <Card title="Ek Parametre Güvenliği" icon="lock">
        `additionalProperties` içinde hassas anahtarlar varsa değerleri maskelenmiş secret referansları ile tutun
      </Card>

      <Card title="Kimlik Bilgileri Yönetimi" icon="key">
        Kullanıcı adı ve şifre gibi hassas bilgileri environment variable veya secret manager kullanarak saklayın. Kimlik bilgilerini kod veya konfigürasyon dosyalarına hardcode etmeyin. Periyodik olarak şifreleri güncelleyin
      </Card>

      <Card title="SSL/TLS Kullanımı" icon="shield-halved">
        Production ortamında mutlaka SSL/TLS aktif edin. Self-signed sertifikalar sadece development ortamında kullanın. Sertifika expiration tarihlerini takip edin ve zamanında yenileyin
      </Card>

      <Card title="Erişim Kontrolü" icon="user-shield">
        Connection yapılandırmasını sadece yetkili kullanıcıların değiştirmesine izin verin. Connection değişiklik loglarını saklayın. Kritik connection'lar için değişiklik approval süreci uygulayın
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kaçınılması Gerekenler">
    <CardGroup cols={2}>
      <Card title="Tek Sunucuya Bağımlılık" icon="exclamation-triangle">
        **Neden kaçınılmalı:** Birincil SMTP hizmeti kesildiğinde tüm e-posta akışı durur.\
        **Alternatif:** İkincil host'u `additionalProperties` veya ayrı Connection ile tanımlayın
      </Card>

      <Card title="Paylaşımlı Kimlik Bilgileri" icon="users-slash">
        **Neden kaçınılmalı:** Şifre sızıntısı tüm süreçleri etkiler.\
        **Alternatif:** Her uygulama için ayrı kullanıcı hesabı açın, erişimleri denetleyin
      </Card>

      <Card title="Yanlış Gönderen Adresi" icon="envelope">
        **Neden kaçınılmalı:** SPF/DKIM uyumsuzluğu e-postaların spam klasörüne düşmesine neden olur.\
        **Alternatif:** Onaylı domain alias'ları kullanın ve DNS kayıtlarını güncel tutun
      </Card>

      <Card title="Production Connection'ı Test Ortamında Kullanma" icon="triangle-exclamation">
        **Neden kaçınılmalı:** Test verileri production sistemine yazılabilir, gerçek kullanıcılar etkilenebilir, güvenlik riski oluşur.\
        **Alternatif:** Her ortam için ayrı connection oluşturun, environment parametresini kullanın, connection isimlerini ortama göre prefix ekleyerek ayırın (Test\_, Prod\_)
      </Card>

      <Card title="Çok Düşük Timeout Değerleri" icon="clock">
        **Neden kaçınılmalı:** Ağ gecikmelerinde connection sürekli timeout olur, Entegrasyon adımları başarısız olur.\
        **Alternatif:** Gerçek kullanım senaryolarına göre timeout değerlerini ayarlayın, network latency'yi ölçün ve timeout'ları buna göre belirleyin
      </Card>

      <Card title="Connection Pool Kullanmama" icon="layer-group">
        **Neden kaçınılmalı:** Her istekte yeni bağlantı açılır, performans düşer, kaynak tüketimi artar, hedef sistem yükü artar.\
        **Alternatif:** Connection pool aktif edin, pool size'ı trafik hacmine göre ayarlayın, pool monitoring kurun
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Performans İpuçları">
    <CardGroup cols={2}>
      <Card title="SMTP Host Seçimi" icon="server">
        **Öneri:** Aynı datacenter'daki SMTP hostlarını tercih edin.\
        **Etki:** Ağ gecikmesi düşer, timeout riski azalır
      </Card>

      <Card title="Ek Parametre Optimizasyonu" icon="slider">
        **Öneri:** `mail.smtp.connectiontimeout`, `mail.smtp.writetimeout` değerlerini gerçek yük testlerine göre ayarlayın.\
        **Etki:** Büyük eklerde bile istikrarlı performans
      </Card>

      <Card title="Test Mail Otomasyonu" icon="flask">
        **Öneri:** CI/CD'de Test Connection API'sini tetikleyin.\
        **Etki:** Yanlış konfigürasyonlar üretime taşınmadan yakalanır
      </Card>

      <Card title="Connection Pool Optimizasyonu" icon="layer-group">
        **Öneri:** Pool size'ı peak trafiğe göre ayarlayın (önerilen: eşzamanlı istek sayısı × 1.5), idle connection timeout'ları belirleyin, pool health check yapın.\
        **Etki:** Bağlantı açma maliyeti %80 azalır, yanıt süreleri düşer, kaynak kullanımı optimize edilir
      </Card>

      <Card title="Timeout Değerleri Optimizasyonu" icon="clock">
        **Öneri:** Gerçek network latency'yi ölçün, timeout değerlerini buna göre ayarlayın, çok düşük veya çok yüksek timeout'lardan kaçının.\
        **Etki:** Gereksiz beklemeler önlenir, hızlı fail-over sağlanır, kullanıcı deneyimi iyileşir
      </Card>

      <Card title="Connection Monitoring" icon="chart-bar">
        **Öneri:** Connection pool kullanımını izleyin, timeout oranlarını takip edin, connection health check yapın, alerting kurun.\
        **Etki:** Sorunlar proaktif tespit edilir, performans darboğazları erken belirlenir, kesinti süresi azalır
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Sorun Giderme (Troubleshooting)

<AccordionGroup>
  <Accordion title="E-Posta Teslim Edilmiyor">
    <Warning>
      Yanlış `from` domain, SMTP sağlayıcısı engelledi veya TLS zorunlu ama devre dışı olabilir.
    </Warning>

    <Steps>
      <Step title="DNS/SPF Kontrolü">
        DNS/SPF kayıtlarını doğrulayın.
      </Step>

      <Step title="Provider Logları">
        Provider loglarını kontrol edin.
      </Step>

      <Step title="STARTTLS Aktifleştirme">
        **Enable STARTTLS** toggle'ını açıp yeniden test edin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Test Mail Başarısız">
    <Warning>
      `addressToTest` geçersiz, Auth bilgileri yanlış veya SMTP portu firewall'da kapalı olabilir.
    </Warning>

    <Steps>
      <Step title="Test Adresi">
        Test adresini güncelleyin.
      </Step>

      <Step title="Credential Kontrolü">
        Credential'ları yeniden girin.
      </Step>

      <Step title="Port Kontrolü">
        Network ekibinden port açılımını doğrulatın.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Timeout">
    <Warning>
      Network gecikmesi, hedef sistem yavaş yanıt veriyor veya timeout değeri çok düşük olabilir.
    </Warning>

    <Steps>
      <Step title="Network Kontrolü">
        Network connectivity kontrol edin.
      </Step>

      <Step title="Sistem Sağlığı">
        Hedef sistem sağlığını kontrol edin.
      </Step>

      <Step title="Timeout Ayarları">
        Timeout değerlerini artırın.
      </Step>

      <Step title="Log İnceleme">
        Connection loglarını inceleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Authentication Failed">
    <Warning>
      Yanlış kullanıcı adı/şifre, expired credentials veya yetki problemi olabilir.
    </Warning>

    <Steps>
      <Step title="Kimlik Bilgileri">
        Kimlik bilgilerini doğrulayın.
      </Step>

      <Step title="Kullanıcı Durumu">
        Hedef sistemde kullanıcının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Yetki Kontrolü">
        Gerekli yetkilerin verildiğini kontrol edin.
      </Step>

      <Step title="Sertifika Kontrolü">
        SSL/TLS sertifikalarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Pool Exhausted">
    <Warning>
      Pool size çok düşük, connection leak var veya trafik çok yüksek olabilir.
    </Warning>

    <Steps>
      <Step title="Pool Size">
        Pool size'ı artırın.
      </Step>

      <Step title="Connection Kontrolü">
        Connection'ların düzgün kapatıldığını kontrol edin.
      </Step>

      <Step title="Idle Timeout">
        Idle connection timeout'ları ayarlayın.
      </Step>

      <Step title="Metrik İzleme">
        Connection kullanım metriklerini izleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Test Başarılı Ama Entegrasyon Akışı Hata Veriyor">
    <Warning>
      Integration/Connector adımında farklı connection seçili olabilir, adım yanlış yapılandırılmış olabilir veya Flow/Job redeploy edilmemiş olabilir.
    </Warning>

    <Steps>
      <Step title="Enable Toggle">
        Connection'ın enable toggle'ının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Connection Seçimi">
        Integration Flow'da doğru connection'ın seçildiğini doğrulayın.
      </Step>

      <Step title="Connection Deploy">
        Connection'ı tekrar deploy edin.
      </Step>

      <Step title="Flow/Job Deploy">
        Integration Flow veya Job'ı redeploy edin.
      </Step>

      <Step title="Log Kontrolü">
        Gateway loglarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Sık Sorulan Sorular (SSS)

<AccordionGroup>
  <Accordion title="E-Posta Connection'da birden fazla gönderen adres tutabilir miyim?">
    <Info>
      Tek Connection tek `from` adresi taşıyabilir; farklı adresler için klonlayarak ayrı Connection oluşturun veya application-level override kullanın.
    </Info>
  </Accordion>

  <Accordion title="STARTTLS zorunlu olmayan sağlayıcıda TLS'i aktif etsem sorun olur mu?">
    <Info>
      Çoğu SMTP sunucusu STARTTLS komutunu destekler, desteklenmiyorsa handshake aşamasında hata alırsınız; bu durumda toggle'ı kapatın.
    </Info>
  </Accordion>

  <Accordion title="Additional Properties alanına hangi key/value'ları ekleyebilirim?">
    <Info>
      Sağlayıcının JavaMail uyumlu parametreleri (`mail.smtp.connectiontimeout`, `mail.smtp.auth.mechanisms` vb.) desteklenir; key ve value serbest metindir.
    </Info>
  </Accordion>

  <Accordion title="Test Connection ile gerçek alıcılara mail gider mi?">
    <Info>
      Hayır, sadece `addressToTest` alanına girilen adrese tek mail gönderilir; Integration Flow tetiklenmez.
    </Info>
  </Accordion>

  <Accordion title="Bu Connection'ı connector modunda da kullanabilir miyim?">
    <Check>
      Evet, connector ekranından `connectorMode` aktif edildiğinde aynı form kullanılır ve kaydettiğiniz Connection listede görünür.
    </Check>
  </Accordion>

  <Accordion title="Aynı connection'ı birden fazla Integration Flow'da kullanabilir miyim?">
    <Check>
      Evet, aynı connection birden fazla Integration Flow veya Connector adımında kullanılabilir. Bu merkezi yönetim sağlar ve konfigürasyon tutarlılığını garanti eder. Ancak connection'da yapılan değişiklikler tüm kullanım yerlerini etkileyeceği için dikkatli olunmalıdır.
    </Check>
  </Accordion>

  <Accordion title="Connection pool kullanmak zorunlu mudur?">
    <Info>
      Connection pool kullanımı zorunlu değildir ancak yüksek trafikli sistemlerde şiddetle önerilir. Her istekte yeni bağlantı açmak yerine mevcut bağlantıları yeniden kullanmak performansı önemli ölçüde artırır.
    </Info>
  </Accordion>

  <Accordion title="Test ve Production için farklı connection'lar mı oluşturmalıyım?">
    <Check>
      Evet, her ortam için ayrı connection oluşturmanız önerilir. Alternatif olarak environment parametresini kullanarak tek connection içinde tüm ortamları yönetebilirsiniz. Bu yaklaşım daha kolay yönetim ve daha az hata riski sağlar.
    </Check>
  </Accordion>

  <Accordion title="Test Connection başarılı ama Integration Flow'da çalışmıyor, neden?">
    <Warning>
      Birkaç neden olabilir:
    </Warning>

    1. Connection enable toggle'ı pasif olabilir
    2. Integration adımında farklı bir connection seçili olabilir
    3. Connection deploy edilmemiş olabilir
    4. Integration Flow henüz redeploy edilmemiş olabilir
  </Accordion>
</AccordionGroup>
