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

Mailgun से आएँ

Mailgun SDK को रखें और OpenEmail के ज़रिए भेजें। उसका बेस URL और कुंजी बदलें, आपका भेजने वाला कोड जैसा है वैसा ही रहता है।

क्या बदलना है

SDK को https://api.openemail.uk/compat/mailgun पर पॉइंट करें और उसे Mailgun कुंजी की जगह emails:send अनुमति वाली OpenEmail API कुंजी दें। यह उसी HTTP Basic साइन-इन के पासवर्ड के रूप में जाती है, और यूज़रनेम जाँचा नहीं जाता। पाथ में डोमेन वर्कस्पेस के डोमेन में से एक होना चाहिए, और कोई संदेश जा सकता है या नहीं, यह From पता तय करता है, जैसा OpenEmail में हर जगह होता है।

import formData from 'form-data'import Mailgun from 'mailgun.js' const mailgun = new Mailgun(formData)const mg = mailgun.client({  username: 'api',  key: process.env.OPENEMAIL_API_KEY,  url: 'https://api.openemail.uk/compat/mailgun',}) await mg.messages.create('acme.com', {  from: 'Acme Billing <[email protected]>',  to: ['[email protected]'],  subject: 'Your invoice',  html: '<p>Your invoice is attached.</p>',})

Ruby में दूसरा आर्ग्युमेंट बिना स्कीम के होस्ट और पाथ है। PHP में SDK दिए गए endpoint का सिर्फ़ होस्ट रखता है, इसलिए पाथ php-http के AddPathPlugin से जोड़ा जाता है, जिसे SDK पहले से इंस्टॉल करता है। आधिकारिक Python पैकेज यह चेतावनी लॉग कर सकता है कि होस्ट Mailgun का नहीं है, और फिर भी भेजता है। वह 429 या किसी 5xx से विफल अनुरोध को दोबारा भी भेजता है, इसलिए बैच का कुछ हिस्सा जा चुकने पर OpenEmail 5xx की जगह 400 लौटाता है।

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

परोसा जाने वाला एंडपॉइंट POST /v3/{domain}/messages है, multipart/form-data के रूप में, जो अटैचमेंट के लिए ज़रूरी है, या application/x-www-form-urlencoded के रूप में। [] पर खत्म होने वाला फ़ील्ड नाम उसके बिना पढ़ा जाता है।

MailgunOpenEmail में
fromभेजने वाला, उसके नाम के साथ।
toप्राप्तकर्ता, दोहराकर या कॉमा से अलग करके। cc और bcc के साथ, हर संदेश में 50 तक।
subjectविषय।
htmlHTML बॉडी। text टेक्स्ट बॉडी बनता है, और दोनों में से एक, या template, ज़रूरी है।
attachmentफ़ाइलें, अधिकतम 20 और कुल 5 MB।
inlineजिस इमेज को HTML उसके फ़ाइल नाम के साथ cid: के रूप में इस्तेमाल करता है, वह जहाँ दिखती है वहीं जोड़ दी जाती है। बाकी हर इनलाइन फ़ाइल सामान्य अटैचमेंट बनकर आती है।
o:tagtag, tag_2 और इसी तरह आगे नाम वाले टैग, हर एक में एक टैग।
v:हर वेरिएबल अपने नाम और मान के साथ एक टैग बनता है। o:tag के साथ, हर संदेश में अधिकतम 10।
o:deliverytimeशेड्यूल किया गया भेजना, एक साल आगे तक। बीत चुका समय तुरंत भेजता है।
o:trackingo:tracking-clicks और o:tracking-opens के साथ, संदेश के लिए ट्रैकिंग चालू या बंद करता है। htmlonly चालू माना जाता है।
o:testmodeyes संदेश को डिलीवर किए बिना भेजा हुआ दर्ज करता है, जैसे oe_test_ कुंजी करती है।
h:Reply-Toजवाब का पता। बाकी हर h: फ़ील्ड एक कस्टम हेडर बनता है: X-*, List-*, Precedence, Auto-Submitted, Importance, Priority और Feedback-ID।
recipient-variablesबैच में भेजना। to का हर पता अपना संदेश पाता है, जिसमें %recipient.key% उसके वेरिएबल से और %recipient% उसके पते से भरा जाता है, और cc व bcc हर संदेश पर जाते हैं। बिना मान वाला प्लेसहोल्डर जैसा है वैसा रहता है।
templateOpenEmail टेम्पलेट का slug या id (tpl_...), जो t:variables से, और वह न हो तो h:X-Mailgun-Variables से भरा जाता है। t:version किसी वर्ज़न को उसकी संख्या से चुनता है।

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

  • html या text के साथ template, क्योंकि OpenEmail टेम्पलेट पूरी बॉडी देता है, और ऐसा t:version जो वर्ज़न संख्या न हो।
  • o:deliverytime-optimize-period और o:time-zone-localize, क्योंकि OpenEmail हर प्राप्तकर्ता के लिए भेजने का समय नहीं चुनता। बाकी h:X-Mailgun- हेडर, जो Mailgun के लिए निर्देश हैं: उनकी जगह मेल खाता o: विकल्प इस्तेमाल करें।
  • अकेला amp-html। html या text के साथ होने पर उसे छोड़ दिया जाता है, क्योंकि वे संदेश को पहले से ले जाते हैं।
  • एक से ज़्यादा जवाब के पते, 10 से ज़्यादा टैग, अक्षरों, अंकों, _ और - के अलावा कुछ और वाला टैग नाम, और 100 से ज़्यादा प्राप्तकर्ताओं वाला बैच। Mailgun 1,000 लेता है, इसलिए बड़े बैच बाँट दें।

o:dkim, o:require-tls, o:skip-verification, o:sending-ip, o:sending-ip-pool, o:tracking-pixel-location-top, o:archive-to, o:deliver-within और t:text स्वीकार होते हैं और कुछ नहीं बदलते।

जवाब और एरर

  • भेजना Queued. Thank you. संदेश और एक id के साथ 200 लौटाता है: कोण कोष्ठकों में OpenEmail संदेश id, जिसे GET /emails/{id} और वेबहुक उनके बिना इस्तेमाल करते हैं। बैच में भेजना हर प्राप्तकर्ता के लिए एक संदेश बनाता है, हर एक का अपना id होता है, और पहले वाले के साथ जवाब देता है। Idempotency-Key हेडर बाकी API की तरह ही काम करता है।
  • गायब या अनजानी कुंजी को सादे टेक्स्ट Forbidden के साथ 401 मिलता है, और जो डोमेन वर्कस्पेस में नहीं है उसे Domain not found के साथ 404। बाकी सब एक message के रूप में लौटता है: न भेजे जा सकने वाले संदेश के लिए 400, बिना emails:send वाली कुंजी, ऐसे From पते जिसे कुंजी इस्तेमाल नहीं कर सकती, ऐसे डोमेन जो अभी भेज नहीं सकता या अपना भेजने का कोटा खत्म कर चुके वर्कस्पेस के लिए 403, और 25 MB से बड़ी बॉडी या 5 MB से बड़े अटैचमेंट के लिए 413।
  • जब दूसरों के स्वीकार होने के बाद बैच का कोई प्राप्तकर्ता विफल होता है, तो एरर पहले से भेजे गए संदेशों के नाम बताता है और 400 लौटाता है, ताकि दोबारा कोशिश करने वाला SDK उन्हें दो बार न भेजे।