दस्तावेज़ पर जाएँ
नॉलेज बेस

Postmark से आएँ

Postmark लाइब्रेरी को रखें और OpenEmail के ज़रिए भेजें। उसका होस्ट और सर्वर टोकन बदलें, आपका भेजने वाला कोड जैसा है वैसा ही रहता है।

क्या बदलना है

लाइब्रेरी को https://api.openemail.uk/compat/postmark पर पॉइंट करें और सर्वर टोकन की जगह emails:send अनुमति वाली OpenEmail API कुंजी रखें। यह उसी X-Postmark-Server-Token हेडर में जाती है। मेल भेजने वाली आपकी कॉल जैसी हैं वैसी ही रहती हैं, और कोई संदेश जा सकता है या नहीं, यह From पता तय करता है, जैसा OpenEmail में हर जगह होता है।

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 में requestHost होस्ट और पाथ को साथ रखता है, बिना स्कीम और बिना आख़िरी स्लैश के। Ruby में path_prefix को दोनों सिरों पर स्लैश चाहिए। Python में base_url के साथ आधिकारिक postmark-python पैकेज इस्तेमाल करें। कम्युनिटी पैकेज postmarker किसी होस्ट के नीचे के पाथ तक नहीं पहुँच सकता, इसलिए यहाँ काम नहीं करता। PHP में PostmarkClient::$BASE_URL स्कीम, होस्ट और पाथ लेता है, बिना आख़िरी स्लैश के। यह static है, इसलिए प्रोसेस के हर Postmark क्लाइंट पर लागू होता है, PostmarkAdminClient पर भी।

क्या किससे मेल खाता है

परोसे जाने वाले एंडपॉइंट POST /email, /email/batch, /email/withTemplate और /email/batchWithTemplates हैं। फ़ील्ड के नाम किसी भी केस में मेल खाते हैं, जैसे Postmark में, और खाली स्ट्रिंग को छोड़ा हुआ माना जाता है।

PostmarkOpenEmail में
Fromभेजने वाला, उसके नाम के साथ।
Toकॉमा से अलग किए गए प्राप्तकर्ता। Cc और Bcc के साथ, हर संदेश में 50 तक।
ReplyToजवाब का एक पता।
Subjectविषय।
HtmlBodyHTML बॉडी। TextBody टेक्स्ट बॉडी बनता है, और दोनों में से एक ज़रूरी है।
HeadersName और Value के रूप में दिए गए कस्टम हेडर: X-*, List-*, Reply-To, Precedence, Auto-Submitted, Importance, Priority और Feedback-ID।
Attachmentsफ़ाइलें, अधिकतम 20 और कुल 5 MB। जिस इमेज का ContentID HTML cid: के रूप में इस्तेमाल करता है, वह जहाँ दिखती है वहीं जोड़ दी जाती है। बाकी हर फ़ाइल सामान्य अटैचमेंट बनकर आती है।
Tagtag नाम का एक टैग।
Metadataउन्हीं नामों और मानों वाले टैग। Tag के साथ, हर संदेश में अधिकतम 10।
TrackOpensसंदेश के लिए खुलने की ट्रैकिंग चालू या बंद करता है।
MessageStreamoutbound, या किसी और ट्रांज़ैक्शनल स्ट्रीम का id, संदेश को हमेशा की तरह भेजता है।
TemplateAliasOpenEmail टेम्पलेट का slug या id (tpl_...), जो TemplateModel से भरा जाता है। InlineCss स्वीकार होता है और कुछ नहीं बदलता।

क्या अस्वीकार होता है, और क्यों

  • ErrorCode 1101 के साथ TemplateId। Postmark टेम्पलेट id का यहाँ कोई मतलब नहीं है, इसलिए टेम्पलेट को OpenEmail में दोबारा बनाएँ और उसका slug या id TemplateAlias के रूप में भेजें।
  • ErrorCode 1236 के साथ broadcast स्ट्रीम। ये एंडपॉइंट ट्रांज़ैक्शनल मेल भेजते हैं, और न्यूज़लेटर OpenEmail ब्रॉडकास्ट के रूप में जाते हैं।
  • टेम्पलेट वाले संदेश पर Subject, HtmlBody या TextBody, ErrorCode 1123 के साथ, क्योंकि उन्हें टेम्पलेट देता है। TextOnly मान वाला TrackLinks, क्योंकि OpenEmail HTML हिस्से के लिंक ट्रैक करता है।
  • एक से ज़्यादा जवाब के पते, दो बार दिया गया या ऊपर की सूची से बाहर का हेडर, 10 से ज़्यादा टैग, और अक्षरों, अंकों, _ और - के अलावा कुछ और वाला टैग या Metadata नाम।
  • ErrorCode 410 के साथ 100 से ज़्यादा संदेशों वाला बैच। Postmark 500 लेता है, इसलिए बड़े बैच बाँट दें।

जवाब और एरर

  • भेजना To, SubmittedAt, MessageID, 0 वाले ErrorCode और OK वाले Message के साथ 200 लौटाता है। MessageID OpenEmail संदेश id है, वही जिसे GET /emails/{id} और वेबहुक इस्तेमाल करते हैं। Idempotency-Key हेडर बाकी API की तरह ही काम करता है।
  • बैच हर संदेश के एक नतीजे के साथ, उसी क्रम में, 200 लौटाता है। विफल संदेश में सिर्फ़ उसका ErrorCode और Message होता है, और बाकी फिर भी जाते हैं।
  • एरर ErrorCode और Message के रूप में लौटते हैं। गायब या अनजानी कुंजी, या बिना emails:send वाली कुंजी, को ErrorCode 10 के साथ HTTP 401 मिलता है। बाकी को HTTP 422 मिलता है: संदेश के लिए ही ErrorCode 300, ऐसे From पते के लिए 400 जिसे कुंजी इस्तेमाल नहीं कर सकती, ऐसे डोमेन के लिए 401 जो अभी भेज नहीं सकता, JSON न होने वाली बॉडी के लिए 402 और अपना भेजने का कोटा खत्म कर चुके वर्कस्पेस के लिए 405। HTTP 413 का मतलब है कि बॉडी 10 MB से, या बैच में 50 MB से, बड़ी है, या अटैचमेंट 5 MB से बड़े हैं।