Postmark'tan taşının
Postmark kitaplığını koruyun ve OpenEmail üzerinden gönderin. Host'unu ve sunucu belirtecini değiştirin, gönderim kodunuz olduğu gibi kalır.
Neyi değiştirmeli
Kitaplığı https://api.openemail.uk/compat/postmark adresine yönlendirin ve sunucu belirtecinin yerine emails:send iznine sahip bir OpenEmail API anahtarı koyun. Anahtar aynı X-Postmark-Server-Token başlığında gider. Posta gönderen çağrılarınız olduğu gibi kalır ve bir iletinin çıkıp çıkamayacağına, OpenEmail'in her yerinde olduğu gibi From adresi karar verir.
import { ServerClient } from 'postmark' const client = new ServerClient(process.env.OPENEMAIL_API_KEY, { requestHost: 'api.openemail.uk/compat/postmark',}) await client.sendEmail({ From: '[email protected]', To: '[email protected]', Subject: 'Your invoice', HtmlBody: '<p>Your invoice is attached.</p>', MessageStream: 'outbound',})Node'da requestHost, şema ve sonda eğik çizgi olmadan host ile yolu birlikte içerir. Ruby'de path_prefix iki ucunda da eğik çizgi ister. Python'da base_url ile resmi postmark-python paketini kullanın. Topluluk paketi postmarker bir host'un altındaki yola ulaşamaz, bu yüzden burada çalışmaz. PHP'de PostmarkClient::$BASE_URL, şemayı, host'u ve yolu sonda eğik çizgi olmadan alır. Statik olduğu için süreçteki her Postmark istemcisine, PostmarkAdminClient dahil, uygulanır.
Ne neye karşılık gelir
Sunulan uç noktalar POST /email, /email/batch, /email/withTemplate ve /email/batchWithTemplates. Alan isimleri Postmark'ta olduğu gibi büyük küçük harf ayırmadan eşleşir ve boş bir dize verilmemiş sayılır.
| Postmark | OpenEmail'de |
|---|---|
| From | Gönderen, adıyla birlikte. |
| To | Virgülle ayrılmış alıcılar. Cc ve Bcc ile birlikte ileti başına en fazla 50. |
| ReplyTo | Tek bir yanıt adresi. |
| Subject | Konu. |
| HtmlBody | HTML gövdesi. TextBody metin gövdesi olur ve ikisinden biri zorunludur. |
| Headers | Name ve Value olarak verilen özel başlıklar: X-*, List-*, Reply-To, Precedence, Auto-Submitted, Importance, Priority ve Feedback-ID. |
| Attachments | Dosyalar, en fazla 20 ve toplam 5 MB. ContentID değerini HTML'in cid: olarak kullandığı görsel, göründüğü yere gömülür. Diğer dosyalar sıradan ek olarak gelir. |
| Tag | tag adlı bir etiket. |
| Metadata | Aynı ad ve değerlere sahip etiketler. Tag ile birlikte ileti başına en fazla 10. |
| TrackOpens | İleti için açılma takibini açar ya da kapatır. |
| TrackLinks | HtmlAndText ve HtmlOnly tıklama takibini açar, None kapatır. |
| MessageStream | outbound ya da başka herhangi bir işlemsel akışın kimliği, iletiyi her zamanki gibi gönderir. |
| TemplateAlias | Bir OpenEmail şablonunun slug'ı ya da kimliği (tpl_...), TemplateModel ile doldurulur. InlineCss kabul edilir ve hiçbir şeyi değiştirmez. |
Neler reddedilir ve neden
- ErrorCode 1101 ile
TemplateId. Bir Postmark şablon kimliği burada bir şey ifade etmez, bu yüzden şablonu OpenEmail'de yeniden oluşturun ve slug'ını ya da kimliğiniTemplateAliasolarak gönderin. - ErrorCode 1236 ile
broadcastakışı. Bu uç noktalar işlemsel posta gönderir, bültenler ise OpenEmail yayınları olarak çıkar. - Şablonlu bir iletide
Subject,HtmlBodyya daTextBody, ErrorCode 1123 ile, çünkü bunları şablon sağlar.TextOnlydeğerindeTrackLinks, çünkü OpenEmail HTML bölümündeki bağlantıları takip eder. - Birden fazla yanıt adresi, iki kez ya da yukarıdaki listenin dışında verilen bir başlık, 10'dan fazla etiket ve harf, rakam,
_ve-dışında karakter içeren bir etiket ya daMetadataadı. - ErrorCode 410 ile 100'den fazla iletilik bir toplu gönderim. Postmark 500 kabul eder, bu yüzden daha büyük toplu gönderimleri bölün.
Yanıtlar ve hatalar
- Bir gönderim
To,SubmittedAt,MessageID, 0 değerindeErrorCodeve OK değerindeMessageile 200 yanıtı verir.MessageID,GET /emails/{id}ve webhook'ların kullandığı OpenEmail ileti kimliğidir.Idempotency-Keybaşlığı API'nin geri kalanındaki gibi çalışır. - Toplu gönderim, aynı sırayla ileti başına bir sonuçla 200 yanıtı verir. Başarısız olan ileti yalnızca kendi
ErrorCodeveMessagedeğerlerini taşır, diğerleri yine de çıkar. - Hatalar
ErrorCodeveMessageolarak döner. Eksik ya da bilinmeyen bir anahtar ya daemails:sendizni olmayan bir anahtar, ErrorCode 10 ile HTTP 401 yanıtı alır. Geri kalanı HTTP 422 alır: iletinin kendisi için ErrorCode 300, anahtarın kullanamadığı bir From adresi için 400, henüz gönderemeyen bir alan adı için 401, JSON olmayan bir gövde için 402 ve gönderim kotasını tüketmiş bir çalışma alanı için 405. HTTP 413, gövdenin 10 MB'ı, toplu gönderimde 50 MB'ı aştığı ya da eklerin 5 MB'ı aştığı anlamına gelir.