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 में, और खाली स्ट्रिंग को छोड़ा हुआ माना जाता है।
| Postmark | OpenEmail में |
|---|---|
| From | भेजने वाला, उसके नाम के साथ। |
| To | कॉमा से अलग किए गए प्राप्तकर्ता। Cc और Bcc के साथ, हर संदेश में 50 तक। |
| ReplyTo | जवाब का एक पता। |
| Subject | विषय। |
| HtmlBody | HTML बॉडी। TextBody टेक्स्ट बॉडी बनता है, और दोनों में से एक ज़रूरी है। |
| Headers | Name और Value के रूप में दिए गए कस्टम हेडर: X-*, List-*, Reply-To, Precedence, Auto-Submitted, Importance, Priority और Feedback-ID। |
| Attachments | फ़ाइलें, अधिकतम 20 और कुल 5 MB। जिस इमेज का ContentID HTML cid: के रूप में इस्तेमाल करता है, वह जहाँ दिखती है वहीं जोड़ दी जाती है। बाकी हर फ़ाइल सामान्य अटैचमेंट बनकर आती है। |
| Tag | tag नाम का एक टैग। |
| Metadata | उन्हीं नामों और मानों वाले टैग। Tag के साथ, हर संदेश में अधिकतम 10। |
| TrackOpens | संदेश के लिए खुलने की ट्रैकिंग चालू या बंद करता है। |
| TrackLinks | HtmlAndText और HtmlOnly क्लिक ट्रैकिंग चालू करते हैं, और None उसे बंद करता है। |
| MessageStream | outbound, या किसी और ट्रांज़ैक्शनल स्ट्रीम का id, संदेश को हमेशा की तरह भेजता है। |
| TemplateAlias | OpenEmail टेम्पलेट का slug या id (tpl_...), जो TemplateModel से भरा जाता है। InlineCss स्वीकार होता है और कुछ नहीं बदलता। |
क्या अस्वीकार होता है, और क्यों
- ErrorCode 1101 के साथ
TemplateId। Postmark टेम्पलेट id का यहाँ कोई मतलब नहीं है, इसलिए टेम्पलेट को OpenEmail में दोबारा बनाएँ और उसका slug या idTemplateAliasके रूप में भेजें। - 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 लौटाता है।MessageIDOpenEmail संदेश 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 से बड़े हैं।