SendGrid से आएँ
SendGrid SDK को रखें और OpenEmail के ज़रिए भेजें। उसका बेस URL और कुंजी बदलें, आपका भेजने वाला कोड जैसा है वैसा ही रहता है।
क्या बदलना है
SDK को https://api.openemail.uk/compat/sendgrid पर पॉइंट करें और उसे SendGrid कुंजी की जगह emails:send अनुमति वाली OpenEmail API कुंजी दें। यह उसी Authorization: Bearer हेडर में जाती है। मेल भेजने वाली आपकी कॉल जैसी हैं वैसी ही रहती हैं, और कोई संदेश जा सकता है या नहीं, यह From पता तय करता है, जैसा OpenEmail में हर जगह होता है।
import sgMail from '@sendgrid/mail'import client from '@sendgrid/client' client.setApiKey(process.env.OPENEMAIL_API_KEY)client.setDefaultRequest('baseUrl', 'https://api.openemail.uk/compat/sendgrid')sgMail.setClient(client) await sgMail.send({ from: '[email protected]', to: '[email protected]', subject: 'Your invoice', html: '<p>Your invoice is attached.</p>',})Node में पहले क्लाइंट पर कुंजी सेट करें, फिर बेस URL, और उसके बाद क्लाइंट को मेल पैकेज को दें। इसके बाद sgMail.setApiKey न बुलाएँ, क्योंकि वह बेस URL को वापस SendGrid पर कर देता है। SDK चेतावनी देता है कि कुंजी SG. से शुरू नहीं होती, जो हानिरहित है। Python, Ruby और PHP में होस्ट को आख़िरी स्लैश के बिना दें।
क्या किससे मेल खाता है
परोसा जाने वाला एंडपॉइंट POST /v3/mail/send है। personalizations की हर प्रविष्टि अपने id के साथ एक अलग OpenEmail संदेश बनती है, इसलिए एक अनुरोध अधिकतम 100 संदेश भेजता है।
| SendGrid | OpenEmail में |
|---|---|
| from | भेजने वाला, उसके नाम के साथ। कोई पर्सनलाइज़ेशन अपना from दे सकता है। |
| personalizations | हर एक का एक संदेश। उसके to, cc और bcc मिलाकर 50 प्राप्तकर्ताओं तक रखते हैं, और उसके subject, headers, custom_args, send_at और substitutions सिर्फ़ उसी संदेश पर लागू होते हैं। |
| subject | विषय, जब तक कोई पर्सनलाइज़ेशन अपना विषय न रखे। |
| content | text/plain टेक्स्ट बॉडी बनता है और text/html HTML बॉडी। text/x-amp-html छोड़ दिया जाता है, क्योंकि HTML बॉडी संदेश को पहले से ले जाती है। |
| attachments | फ़ाइलें, अधिकतम 20 और कुल 5 MB। जिस इनलाइन इमेज का content_id HTML cid: के रूप में इस्तेमाल करता है, वह जहाँ दिखती है वहीं जोड़ दी जाती है। बाकी हर इनलाइन फ़ाइल सामान्य अटैचमेंट बनकर आती है। |
| reply_to | जवाब का पता। reply_to_list भी तब तक काम करता है जब तक उसमें एक ही पता हो। |
| headers | कस्टम हेडर: X-*, List-*, Reply-To, Precedence, Auto-Submitted, Importance, Priority और Feedback-ID। कोई पर्सनलाइज़ेशन अपने हेडर जोड़ देता है। |
| categories | category, category_2 और इसी तरह आगे नाम वाले टैग, हर एक में एक श्रेणी। |
| custom_args | उन्हीं नामों और मानों वाले टैग। पर्सनलाइज़ेशन के मान आगे रहते हैं। |
| send_at | शेड्यूल किया गया भेजना, एक साल आगे तक। बीत चुका समय तुरंत भेजता है। |
| substitutions | हर कुंजी उस संदेश के विषय, टेक्स्ट बॉडी और HTML बॉडी में अपने मान से बदल दी जाती है। |
| template_id | OpenEmail टेम्पलेट का id (tpl_...) या slug, जो dynamic_template_data से भरा जाता है। |
| tracking_settings | open_tracking.enable और click_tracking.enable संदेश के लिए खुलने और क्लिक की ट्रैकिंग चालू या बंद करते हैं। |
| mail_settings | sandbox_mode.enable अनुरोध, भेजने वाले और टेम्पलेट की जाँच करता है, फिर कुछ भी भेजे बिना 200 लौटाता है। |
एक संदेश में अधिकतम 10 टैग होते हैं, श्रेणियाँ और custom_args मिलाकर। जिस अनुरोध को इससे ज़्यादा चाहिए, वह काटा नहीं जाता बल्कि अस्वीकार होता है, ताकि आपने जो भेजा उसमें से कुछ भी चुपचाप गायब न हो।
क्या अस्वीकार होता है, और क्यों
template_idमें SendGrid टेम्पलेट id, जैसेd-…। टेम्पलेट SendGrid में ही रहते हैं, इसलिए टेम्पलेट को OpenEmail में दोबारा बनाएँ और उसका id या slug भेजें।template_idके साथcontent, क्योंकि OpenEmail टेम्पलेट पूरी बॉडी देता है। इसी कारण टेम्पलेट के साथsubstitutionsभी: मानdynamic_template_dataमें भेजें।- एक से ज़्यादा जवाब के पते,
reply_toऔरreply_to_listएक साथ, और टेक्स्ट व HTML के अलावा दूसरे कंटेंट प्रकार। कैलेंडर आमंत्रण को.icsअटैचमेंट के रूप में भेजें। - चालू
mail_settings.footer, औरsections, क्योंकि OpenEmail आपके संदेश में अपनी ओर से टेक्स्ट नहीं लिखता। - 10 से ज़्यादा टैग, अक्षरों, अंकों,
_और-के अलावा कुछ और वाला टैग नाम, ऊपर की सूची से बाहर का हेडर, और एक अनुरोध में 100 से ज़्यादा पर्सनलाइज़ेशन।
asm, batch_id, ip_pool_name, mail_settings की बायपास सेटिंग, subscription_tracking, ganalytics, click_tracking.enable_text और open_tracking.substitution_tag स्वीकार होते हैं और कुछ नहीं बदलते। वर्कस्पेस की रोक सूची के पते हमेशा छोड़ दिए जाते हैं, बायपास सेटिंग चाहे कुछ भी कहे।
जवाब और एरर
- भेजना खाली बॉडी और
X-Message-Idमें OpenEmail संदेश id के साथ 202 लौटाता है, वही id जिसेGET /emails/{id}और वेबहुक इस्तेमाल करते हैं। कई पर्सनलाइज़ेशन होने पर इसमें पहले संदेश का id होता है।Idempotency-Keyहेडर बाकी API की तरह ही काम करता है। - एरर
errorsके रूप में लौटते हैं, जोmessage,fieldऔरhelpकी सूची है: न भेजे जा सकने वाले अनुरोध के लिए 400, गायब या अनजानी कुंजी के लिए 401, बिनाemails:sendवाली कुंजी या ऐसे From पते के लिए 403 जिसे कुंजी इस्तेमाल नहीं कर सकती या जिसका डोमेन अभी भेज नहीं सकता, 30 MB से बड़ी बॉडी या 5 MB से बड़े अटैचमेंट के लिए 413, और जब वर्कस्पेस अपना भेजने का कोटा खत्म कर चुका हो तब 429। - जब पहले वाले स्वीकार होने के बाद कोई पर्सनलाइज़ेशन विफल होता है, तो एरर पहले से भेजे गए संदेशों के नाम बताता है, ताकि दोबारा कोशिश उन्हें छोड़ सके।