Mail Servisi

Stabil

SMTP yapılandırması, e-posta şablonları, raw/template mail gönderimi ve log yönetimi bu servis üzerinden gerçekleştirilir.

Stabil/api/mail/*

Mail servisi proje bazlı SMTP ayarı saklar, default veya projeye özel template kullanır, doğrudan raw mail gönderebilir ve gönderim loglarını kayıt altına alır.

Genel Bakış

Mail Servisi, EVDSOFT mikro servis mimarisinde merkezi e-posta katmanıdır. Bir proje için SMTP ayarları kaydedilebilir, o projeye özel template'ler tanımlanabilir, domain veya projectId üzerinden mail gönderimi yapılabilir ve tüm gönderimler loglanabilir.

Servis Özeti

Base Pattern

/api/mail/*

Internal Headers

X-Internal-Service-Token / X-Internal-Service-Name

Sorumluluklar

SMTP Konfigürasyonu

Projeye ait SMTP ayarlarını kaydeder, getirir ve test eder.

Template Yönetimi

Default veya projeye özel e-posta şablonlarını tanımlar ve listeler.

Template ile Gönderim

Domain veya proje bağlamında değişkenli şablon e-postaları gönderir.

Raw Mail Gönderimi

Hazır subject/bodyHtml/bodyText ile doğrudan mail gönderir.

Mail Logları

Son gönderimleri durum, konu, alıcı ve template bilgileriyle listeler.

Kimlik Doğrulama

GET /api/mail/health dışında örnek isteklerdeX-Internal-Service-Token veX-Internal-Service-Name header'ları kullanılıyor. Mail servisi iç servis çağrıları için tasarlanmış görünüyor.

Not

Mail servisinde başarılı yanıtlar genel olaraksuccess,message,data vetimestamp alanlarını döner. Hata örneklerinde ise ek olarakerror,path vestatus alanları da bulunur.

API Endpoint'leri

Health Check

GET/api/mail/health

Mail servisinin ayakta olduğunu doğrular. Kimlik doğrulama gerektirmez.

Yanıt Örneği

JSON
{
  "data": {
    "service": "MAIL-SERVICE",
    "status": "UP"
  },
  "message": "Mail service ayakta.",
  "success": true,
  "timestamp": "2026-03-07T01:22:13.4362855"
}

SMTP Ayarları

PUT/api/mail/projects/{projectId}/smtp-config

Bir proje için SMTP ayarlarını kaydeder veya günceller.

Headers

İsimDeğerZorunlu
X-Internal-Service-Token{{platformKey}}Evet
X-Internal-Service-NameAUTH-SERVICEEvet
Content-Typeapplication/jsonEvet

İstek Örneği

Terminal
{
  "host": "smtp.hostinger.com",
  "port": 465,
  "username": "[email protected]",
  "password": "your-password",
  "fromEmail": "[email protected]",
  "fromName": "EVDSOFT",
  "replyTo": "[email protected]",
  "sslEnabled": true,
  "tlsEnabled": false,
  "active": true
}

Yanıt Örneği

JSON
{
  "data": {
    "active": true,
    "fromEmail": "[email protected]",
    "fromName": "EVDSOFT",
    "host": "smtp.hostinger.com",
    "id": 1,
    "port": 465,
    "projectId": 3,
    "replyTo": "[email protected]",
    "sslEnabled": true,
    "tlsEnabled": false,
    "username": "[email protected]"
  },
  "message": "SMTP ayarı kaydedildi.",
  "success": true,
  "timestamp": "2026-03-07T01:21:53.2632826"
}
GET/api/mail/projects/{projectId}/smtp-config

Bir projeye ait kayıtlı SMTP ayarını getirir.

Headers

İsimDeğerZorunlu
X-Internal-Service-Token{{platformKey}}Evet
X-Internal-Service-NameAUTH-SERVICEEvet

Yanıt Örneği

JSON
{
  "data": {
    "active": true,
    "fromEmail": "[email protected]",
    "fromName": "EVDSOFT",
    "host": "smtp.hostinger.com",
    "id": 2,
    "port": 465,
    "projectId": 4,
    "replyTo": "[email protected]",
    "sslEnabled": true,
    "tlsEnabled": false,
    "username": "[email protected]"
  },
  "message": "SMTP ayarı getirildi.",
  "success": true,
  "timestamp": "2026-03-07T01:41:10.7092026"
}
POST/api/mail/projects/smtp-config/test

Girilen SMTP ayarlarını kalıcı kaydetmeden test eder ve test e-postası gönderir.

Headers

İsimDeğerZorunlu
X-Internal-Service-Token{{platformKey}}Evet
X-Internal-Service-NameAUTH-SERVICEEvet
Content-Typeapplication/jsonEvet

İstek Örneği

Terminal
{
  "host": "smtp.hostinger.com",
  "port": 465,
  "username": "[email protected]",
  "password": "your-password",
  "fromEmail": "[email protected]",
  "fromName": "EVDSOFT",
  "replyTo": "[email protected]",
  "toEmail": "[email protected]",
  "sslEnabled": true,
  "tlsEnabled": false
}

Yanıt Örneği

JSON
{
  "data": {
    "connected": true,
    "toEmail": "[email protected]",
    "mailSent": true
  },
  "message": "SMTP bağlantısı doğrulandı ve test e-postası gönderildi.",
  "success": true,
  "timestamp": "2026-03-07T02:12:20.2851454"
}

SMTP Test Hataları

  • Yanlış host durumunda bağlantı hatası ve UnknownHostException benzeri detay dönüyor.
  • Yanlış kullanıcı adı/şifre durumunda Authentication failed mesajı dönüyor.

Template Yönetimi

PUT/api/mail/projects/{projectId}/templates

Bir projeye özel mail template kaydeder veya günceller.

Headers

İsimDeğerZorunlu
X-Internal-Service-Token{{platformKey}}Evet
X-Internal-Service-NameAUTH-SERVICEEvet
Content-Typeapplication/jsonEvet

İstek Örneği

Terminal
{
  "code": "EMAIL_VERIFICATION",
  "name": "E-Sentinel Doğrulama Maili",
  "subjectTemplate": "Doğrulama kodun: {{code}}",
  "bodyHtml": "<html><body><h2>E-Sentinel</h2><p>Merhaba {{userName}}</p><p>Kodun: <strong>{{code}}</strong></p></body></html>",
  "bodyText": "Merhaba {{userName}}, kodun: {{code}}",
  "active": true
}

Yanıt Örneği

JSON
{
  "data": {
    "active": true,
    "bodyHtml": "<html><body><h2>E-Sentinel</h2><p>Merhaba {{userName}}</p><p>Kodun: <strong>{{code}}</strong></p></body></html>",
    "bodyText": "Merhaba {{userName}}, kodun: {{code}}",
    "code": "EMAIL_VERIFICATION",
    "createdAt": "2026-03-07T01:22:01.69338",
    "defaultTemplate": false,
    "id": 7,
    "name": "E-Sentinel Doğrulama Maili",
    "projectId": 3,
    "subjectTemplate": "Doğrulama kodun: {{code}}",
    "updatedAt": "2026-03-07T01:22:01.69338"
  },
  "message": "Template kaydedildi.",
  "success": true,
  "timestamp": "2026-03-07T01:22:22.4330281"
}
GET/api/mail/projects/{projectId}/templates

Default ve projeye özel template listesini getirir.

Headers

İsimDeğerZorunlu
X-Internal-Service-Token{{platformKey}}Evet
X-Internal-Service-NameAUTH-SERVICEEvet

Yanıt Örneği

JSON
{
  "data": [
    {
      "active": true,
      "code": "WELCOME",
      "defaultTemplate": true,
      "id": 1,
      "name": "Default Welcome",
      "projectId": null,
      "subjectTemplate": "Hoş geldin {{userName}}"
    },
    {
      "active": true,
      "code": "EMAIL_VERIFICATION",
      "defaultTemplate": true,
      "id": 2,
      "name": "Default Email Verification",
      "projectId": null,
      "subjectTemplate": "E-posta doğrulama kodun: {{code}}"
    },
    {
      "active": true,
      "code": "EMAIL_VERIFICATION",
      "defaultTemplate": false,
      "id": 8,
      "name": "E-Sentinel Doğrulama Maili",
      "projectId": 4,
      "subjectTemplate": "Doğrulama kodun: {{code}}"
    }
  ],
  "message": "Template listesi getirildi.",
  "success": true,
  "timestamp": "2026-03-07T01:41:55.0000000"
}

Default Template Yapısı

Koleksiyonda default olarak WELCOME, EMAIL_VERIFICATION,PASSWORD_RESET ve LOGIN_ALERT gibi sistem template'lerinin bulunduğu görülüyor.

Mail Gönderimi

POST/api/mail/send/template

Domain üzerinden ilgili projeyi çözerek template tabanlı mail gönderir.

Headers

İsimDeğerZorunlu
X-Internal-Service-Token{{platformKey}}Evet
X-Internal-Service-NameAUTH-SERVICEEvet
Content-Typeapplication/jsonEvet

İstek Örneği

Terminal
{
  "domain": "platform-dev.evdsoft.com",
  "toEmail": "[email protected]",
  "templateCode": "EMAIL_VERIFICATION",
  "variables": {
    "userName": "Engin",
    "code": "482913",
    "minutes": "10",
    "projectName": "E-Sentinel"
  }
}

Yanıt Örneği

JSON
{
  "data": {
    "sent": true
  },
  "message": "Template e-postası gönderildi.",
  "success": true,
  "timestamp": "2026-03-07T01:36:19.2749612"
}
POST/api/mail/send/raw

Hazır subject/bodyHtml/bodyText ile doğrudan e-posta gönderir.

Headers

İsimDeğerZorunlu
X-Internal-Service-Token{{platformKey}}Evet
X-Internal-Service-NameAUTH-SERVICEEvet
Content-Typeapplication/jsonEvet

İstek Örneği

Terminal
{
  "domain": "platform-dev.evdsoft.com",
  "toEmail": "[email protected]",
  "subject": "Test mail",
  "bodyHtml": "<html><body><h1>Selam</h1><p>Bu bir test mailidir.</p></body></html>",
  "bodyText": "Selam, bu bir test mailidir."
}

Yanıt Örneği

JSON
{
  "data": {
    "sent": true
  },
  "message": "E-posta gönderildi.",
  "success": true,
  "timestamp": "2026-03-07T01:40:04.7068226"
}
POST/api/mail/send/test-template

Belirli bir projectId üzerinden template mailini test amaçlı gönderir.

Headers

İsimDeğerZorunlu
X-Internal-Service-Token{{platformKey}}Evet
X-Internal-Service-NameAUTH-SERVICEEvet
Content-Typeapplication/jsonEvet

İstek Örneği

Terminal
{
  "projectId": 4,
  "toEmail": "[email protected]",
  "templateCode": "WELCOME",
  "variables": {
    "userName": "Engin",
    "projectName": "E-Sentinel"
  }
}

Yanıt Örneği

JSON
{
  "data": {
    "sent": true
  },
  "message": "Test template e-postası gönderildi.",
  "success": true,
  "timestamp": "2026-03-07T01:40:37.1784268"
}

Loglar

GET/api/mail/projects/{projectId}/logs

Bir projeye ait son mail gönderim loglarını getirir.

Headers

İsimDeğerZorunlu
X-Internal-Service-Token{{platformKey}}Evet
X-Internal-Service-NameAUTH-SERVICEEvet

Yanıt Örneği

JSON
{
  "data": [
    {
      "createdAt": "2026-03-07T01:40:35.886267",
      "errorMessage": null,
      "id": 4,
      "projectId": 4,
      "providerType": "SMTP",
      "sentAt": "2026-03-07T01:40:37.172722",
      "status": "SENT",
      "subject": "Hoş geldin Engin",
      "templateCode": "WELCOME",
      "toEmail": "[email protected]"
    },
    {
      "createdAt": "2026-03-07T01:40:03.628662",
      "errorMessage": null,
      "id": 3,
      "projectId": 4,
      "providerType": "SMTP",
      "sentAt": "2026-03-07T01:40:04.702197",
      "status": "SENT",
      "subject": "Test mail",
      "templateCode": null,
      "toEmail": "[email protected]"
    }
  ],
  "message": "Son loglar getirildi.",
  "success": true,
  "timestamp": "2026-03-07T01:41:35.682939"
}

Veri Modelleri

Aşağıdaki tablolar, yüklediğin mail koleksiyonundaki gerçek response örneklerine göre hazırlanmıştır.

SMTP Config Şeması

AlanTipAçıklama
idnumberSMTP config kayıt ID değeri
projectIdnumberİlgili proje ID değeri
hoststringSMTP sunucu adresi
portnumberSMTP port numarası
usernamestringSMTP kullanıcı adı
fromEmailstringGönderici e-posta adresi
fromNamestringGönderici görünen adı
replyTostringYanıt e-posta adresi
sslEnabledbooleanSSL aktif mi?
tlsEnabledbooleanTLS aktif mi?
activebooleanConfig aktif mi?

Template Şeması

AlanTipAçıklama
idnumberTemplate kayıt ID değeri
projectIdnumber | nullProjeye özel ise proje ID, default template ise null
codestringTemplate benzersiz kodu
namestringTemplate adı
subjectTemplatestringKonu şablonu
bodyHtmlstringHTML mail içeriği
bodyTextstringPlain text mail içeriği
activebooleanTemplate aktif mi?
defaultTemplatebooleanSistem default template mi?
createdAtdatetimeOluşturulma tarihi
updatedAtdatetimeGüncellenme tarihi

Mail Log Şeması

AlanTipAçıklama
idnumberLog kayıt ID değeri
projectIdnumberİlgili proje ID değeri
providerTypestringKullanılan gönderim sağlayıcısı, örn. SMTP
toEmailstringAlıcı e-posta adresi
subjectstringGönderilen e-postanın konusu
templateCodestring | nullTemplate ile gönderildiyse template kodu
statusstringGönderim durumu, örn. SENT
errorMessagestring | nullHata varsa hata mesajı
createdAtdatetimeKayıt oluşturulma zamanı
sentAtdatetime | nullGerçek gönderim zamanı

Yanıt Standardı

Başarılı response gövdeleri tutarlı biçimde aşağıdaki alanları içeriyor:

AlanTipAçıklama
successbooleanİşlemin başarılı olup olmadığını belirtir
messagestringİşleme ait kullanıcı dostu açıklama mesajı
dataobject | array | nullAsıl yanıt yükü
timestampdatetimeYanıtın üretildiği zaman damgası

Hata Response Yapısı

SMTP test hatalarında koleksiyondasuccess: false,error,message,path,status vevalidationErrorsalanlarının döndüğü görülüyor.