Belgelere geç
Bilgi bankası

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.

PostmarkOpenEmail'de
FromGönderen, adıyla birlikte.
ToVirgülle ayrılmış alıcılar. Cc ve Bcc ile birlikte ileti başına en fazla 50.
ReplyToTek bir yanıt adresi.
SubjectKonu.
HtmlBodyHTML gövdesi. TextBody metin gövdesi olur ve ikisinden biri zorunludur.
HeadersName ve Value olarak verilen özel başlıklar: X-*, List-*, Reply-To, Precedence, Auto-Submitted, Importance, Priority ve Feedback-ID.
AttachmentsDosyalar, 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.
Tagtag adlı bir etiket.
MetadataAynı 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.
MessageStreamoutbound ya da başka herhangi bir işlemsel akışın kimliği, iletiyi her zamanki gibi gönderir.
TemplateAliasBir 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ğini TemplateAlias olarak gönderin.
  • ErrorCode 1236 ile broadcast akışı. Bu uç noktalar işlemsel posta gönderir, bültenler ise OpenEmail yayınları olarak çıkar.
  • Şablonlu bir iletide Subject, HtmlBody ya da TextBody, ErrorCode 1123 ile, çünkü bunları şablon sağlar. TextOnly değerinde TrackLinks, çü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 da Metadata adı.
  • 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ğerinde ErrorCode ve OK değerinde Message ile 200 yanıtı verir. MessageID, GET /emails/{id} ve webhook'ların kullandığı OpenEmail ileti kimliğidir. Idempotency-Key baş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 ErrorCode ve Message değerlerini taşır, diğerleri yine de çıkar.
  • Hatalar ErrorCode ve Message olarak döner. Eksik ya da bilinmeyen bir anahtar ya da emails:send izni 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.