Şablonlar
Dinamik değişken değişimi ile yeniden kullanılabilir e-posta şablonları oluşturun ve yönetin
Dinamik değişkenlerle yeniden kullanılabilir e-posta şablonları oluşturun. Şablonlar; e-posta konunuzu, HTML içeriğinizi ve metin içeriğinizi depolar; böylece her istekte içeriği yeniden oluşturmadan kişiselleştirilmiş e-postalar gönderebilirsiniz.
Şablon Oluşturma
POST https://api.mail.land/v1/templatescurl -X POST https://api.mail.land/v1/templates \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Order Confirmation",
"subject": "Your order #{{orderNumber}} is confirmed",
"htmlContent": "<h1>Thanks, {{firstName}}!</h1><p>Order #{{orderNumber}} has been confirmed. Total: {{total}}</p>",
"textContent": "Thanks, {{firstName}}! Order #{{orderNumber}} has been confirmed. Total: {{total}}",
"categoryId": "k3v9q2m7xw4tpa"
}'{
"id": "t8x2m4q9zk7wpr",
"name": "Order Confirmation",
"subject": "Your order #{{orderNumber}} is confirmed",
"htmlContent": "<h1>Thanks, {{firstName}}!</h1>...",
"textContent": "Thanks, {{firstName}}!...",
"categoryId": "k3v9q2m7xw4tpa",
"categoryName": "Transactional",
"categoryColor": "#3B82F6",
"createdAt": "2026-02-17T10:00:00Z",
"updatedAt": null
}Doğrulama Kuralları
| Alan | Kısıtlama |
|---|---|
name | Zorunlu, en fazla 200 karakter |
subject | Zorunlu, en fazla 500 karakter |
htmlContent | Zorunlu, en fazla 1 MB |
textContent | İsteğe bağlı, en fazla 1 MB |
categoryId | İsteğe bağlı, mevcut bir kategoriye başvurmalıdır |
Değişken Sözdizimi
Değişken değişimi için çift süslü ayraç kullanın:
<h1>Hello {{firstName}},</h1>
<p>Your order #{{orderNumber}} shipped on {{shipDate}}.</p>
<p>Track your package: <a href="{{trackingUrl}}">{{trackingNumber}}</a></p>Değişkenler gönderim sırasında değiştirilir. Değerleri gönderme isteğinizdeki variables alanı aracılığıyla iletin:
{
"from": { "email": "[email protected]" },
"to": [
{
"email": "[email protected]",
"variables": {
"firstName": "Jane",
"orderNumber": "ORD-12345",
"shipDate": "Feb 17, 2026",
"trackingUrl": "https://track.example.com/ABC123",
"trackingNumber": "ABC123"
}
}
],
"templateId": "t8x2m4q9zk7wpr"
}Değişkenler hem subject hem de htmlContent/textContent içinde çalışır. Bir şablonun kullandığı her {{variable}} için ya isteğin variables alanında ya da alıcının kendi variables alanında bir değer bulunmalıdır. Biri için değer yoksa MailLand mesajı yer tutucuyla birlikte göndermez: POST /v1/transactional/send 422 TEMPLATE_VARIABLE_MISSING yanıtı verir ve eksik değişkenleri sayar, POST /v1/transactional/send-batch ise o alıcıyı atlar ve rejectedRecipients içinde listeler. Kampanyalar ve otomasyonlar da o alıcıyı atlar. Hiç variables olmadan gönderilen satır içi htmlContent yazıldığı gibi gider. Yer tutucular tam olarak {{name}} biçimindedir; filtre, koşul veya döngü yoktur. Şablon grammarVersion: "legacy-v1" bildirir, bugün tek sözdizimi budur; şablon oluştururken veya güncellerken bu alanı göndermeyebilirsiniz.
Varsayılan Değerler
Bir şablon, kullandığı her kişi alanı için varsayılan bir değer taşıyabilir; böylece o alanda değeri olmayan bir abone de e-postayı alır. Bunları oluştururken ve güncellerken variableDefaults ile ayarlayın; bu, yer tutucu adından değere giden bir nesnedir. Şablonu getirdiğinizde, listelediğinizde veya çoğalttığınızda da döner.
{
"name": "Welcome",
"subject": "Hello {{firstName}}",
"htmlContent": "<p>Hi {{firstName}}</p>",
"variableDefaults": { "firstName": "değerli müşteri" }
}Kurallar:
- Varsayılan değerler yalnızca kampanya ve otomasyon gönderimlerine uygulanır. Alıcının kendi boş olmayan değeri her zaman varsayılanın önüne geçer.
- Ne değeri ne varsayılanı olan alan yine reddedilir: MailLand hiçbir zaman düz
{{firstName}}göndermez. - API ve SMTP üzerinden işlemsel gönderimler etkilenmez. Orada değerler isteğinizden gelir ve eksik değer yukarıda anlatıldığı gibi reddedilir.
- Güncellemede
variableDefaultsalanını göndermezseniz kayıtlı varsayılanlar korunur. Silmek için{}gönderin. - Adlar yer tutucu sözdizimine uyar.
emailvesubscriberIdher zaman sağlanır ve varsayılan alamaz. Bir değer en fazla 200 karakterlik tek satırdır ve bir şablonda en fazla 50 varsayılan olur.
Panel düzenleyicisinde her yer tutucunun, o alanı eksik olan abone sayısını gösteren bir varsayılan girişi vardır; kaydederken, bazı abonelerde eksik olan bir alanın varsayılanı yoksa sizi uyarır.
Şablon Önizleme
Algılanan değişkenler için otomatik olarak doldurulan örnek değerlerle şablonu önizleyin:
GET https://api.mail.land/v1/templates/{id}/previewcurl https://api.mail.land/v1/templates/t8x2m4q9zk7wpr/preview \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"id": "t8x2m4q9zk7wpr",
"name": "Order Confirmation",
"subject": "Your order #12345 is confirmed",
"renderedHtml": "<h1>Thanks, John!</h1><p>Order #12345 has been confirmed.</p>",
"renderedText": "Thanks, John! Order #12345 has been confirmed."
}Şablon Kopyalama
Mevcut bir şablonu klonlayın:
POST https://api.mail.land/v1/templates/{id}/duplicatecurl -X POST https://api.mail.land/v1/templates/t8x2m4q9zk7wpr/duplicate \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Kopya otomatik oluşturulmuş bir ad alır: "Order Confirmation (Copy)". Bir kopya zaten mevcutsa ad artar: "Order Confirmation (Copy 2)" vb.
Şablon Kategorileri
Şablonları isteğe bağlı renklerle kategorilere göre düzenleyin.
Kategori oluşturma
POST https://api.mail.land/v1/templates/categoriescurl -X POST https://api.mail.land/v1/templates/categories \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Transactional",
"description": "Order confirmations, receipts, and shipping notifications",
"color": "#3B82F6"
}'| Alan | Kısıtlama |
|---|---|
name | Zorunlu, 1-100 karakter |
description | İsteğe bağlı, en fazla 500 karakter |
color | İsteğe bağlı, hex formatı (#3B82F6 veya #38F) |
Kategorileri listeleme
GET https://api.mail.land/v1/templates/categoriescurl https://api.mail.land/v1/templates/categories \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"categories": [
{
"id": "k3v9q2m7xw4tpa",
"name": "Transactional",
"description": "Order confirmations, receipts",
"color": "#3B82F6",
"templateCount": 12,
"createdAt": "2026-01-15T10:00:00Z"
}
],
"totalCount": 3
}Şablonları Listeleme
GET https://api.mail.land/v1/templates?limit=50curl "https://api.mail.land/v1/templates?limit=50" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Kategoriye göre filtrele:
GET https://api.mail.land/v1/templates?categoryId=k3v9q2m7xw4tpacurl "https://api.mail.land/v1/templates?categoryId=k3v9q2m7xw4tpa" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."{
"items": [
{
"id": "t8x2m4q9zk7wpr",
"name": "Order Confirmation",
"subject": "Your order #{{orderNumber}} is confirmed",
"htmlContent": "...",
"categoryName": "Transactional",
"categoryColor": "#3B82F6",
"createdAt": "2026-02-17T10:00:00Z"
}
],
"nextCursor": "eyJ2IjoxLCJzIjoiY3JlYXRlZGF0OmRlc2MiLCJrIjoi...",
"hasMore": true
}Şablon Güncelleme
PUT https://api.mail.land/v1/templates/{id}Güncelleme isteğinde tüm alanlar zorunludur (bu tam bir değiştirmedir, kısmi güncelleme değildir):
curl -X PUT https://api.mail.land/v1/templates/t8x2m4q9zk7wpr \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Order Confirmation v2",
"subject": "Order #{{orderNumber}} confirmed - {{companyName}}",
"htmlContent": "<h1>Thanks, {{firstName}}!</h1><p>Updated template content.</p>",
"textContent": "Thanks, {{firstName}}! Updated template content.",
"categoryId": "k3v9q2m7xw4tpa"
}'Şablon Silme
DELETE https://api.mail.land/v1/templates/{id}curl -X DELETE https://api.mail.land/v1/templates/t8x2m4q9zk7wpr \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."Başarı durumunda 204 No Content döner. Silinen bir şablon artık alınamaz, listelenemez veya gönderim için kullanılamaz: ona başvuran bir gönderim isteği, anlık veya zamanlanmış, 400 TEMPLATE_NOT_FOUND ile reddedilir; şablonu son tarihinden önce silinen bir zamanlama da gönderim anında aynı şekilde reddedilir.
Gönderirken Şablon Kullanma
Gönderme isteğinizde bir şablona kimliğiyle başvurun. Şablonun konusu ve içeriği, değişkenler değiştirilerek kullanılır:
{
"from": { "email": "[email protected]" },
"to": [
{
"email": "[email protected]",
"variables": {
"firstName": "Jane",
"orderNumber": "ORD-12345"
}
}
],
"templateId": "t8x2m4q9zk7wpr",
"variables": {
"companyName": "Acme Inc"
}
}templateId ayarlandığında her zaman şablonun render edilmiş konusu kullanılır; gönderme isteğindeki subject yok sayılır.
Plan Sınırları
Oluşturabileceğiniz şablon sayısı planınıza bağlıdır. Sınıra ulaşırsanız, yeni bir şablon oluşturmak 403 PLAN_LIMIT_REACHED döner.
Sonraki Adımlar
- REST API: şablonlarla e-posta gönderme
- Toplu Gönderim: toplu e-postalarda şablon kullanma
- Zamanlanmış E-postalar:
scheduledAtile/v1/transactional/sendüzerinden şablon kullanımı (zamanlama uç noktasındatemplateIdalanı yoktur)