SMTP के ज़रिए ईमेल भेजें
अगर आपका एप्लिकेशन पहले से SMTP सपोर्ट करता है, तो उसका होस्ट, पोर्ट और क्रेडेंशियल बदलकर उसे हमारे रिले पर पॉइंट करें। फ़्रेमवर्क, कंटेंट-मैनेजमेंट सिस्टम, प्रिंटर और ऐसा कोई भी सॉफ़्टवेयर जो SMTP रिले को मेल भेज सकता है, इस तरीके का उपयोग कर सकता है।
SMTP के ज़रिए भेजे गए मेल के साथ ठीक वैसा ही व्यवहार होता है जैसा ईमेल API से भेजे गए मेल के साथ: वही डोमेन सत्यापन, IP पूल, DKIM साइनिंग, सप्रेशन हैंडलिंग, ट्रैकिंग, इवेंट और एनालिटिक्स। SMTP उसी प्रोडक्ट तक पहुँचने का दूसरा रास्ता है, इसलिए एक के लिए की गई हर सेटिंग दूसरे पर भी लागू होती है।
अगर आप अपने एप्लिकेशन का मौजूदा संदेश बनाने वाला कोड बनाए रखना चाहते हैं, तो SMTP रिले सेवा चुनें। अगर आपको संरचित अनुरोध फ़ील्ड या सहेजे गए टेम्पलेट चाहिए, तो ईमेल API चुनें। SMTP कंटेंट MIME संदेश से लेता है और भेजने के विकल्प API कुंजी के कॉन्फ़िगरेशन से।
पहले आपको क्या चाहिए
- एक सत्यापित सेंडिंग डोमेन।
MAIL FROMमें (और संदेश केFromहेडर में) डाला गया पता ऐसे डोमेन का होना चाहिए जिसे आपने इस वर्कस्पेस में सत्यापित किया है। सेंडिंग डोमेन देखें। emailsस्कोप वाली एक API कुंजी। SMTP आपकी सामान्य API कुंजियों का उपयोग करता है और इसके लिए अलग SMTP क्रेडेंशियल की ज़रूरत नहीं होती। Developers > API keys में ईमेल भेजना चालू करके एक कुंजी बनाएँ।emailsस्कोप के बिना कोई कुंजी नहीं भेज सकती, और केवलverifyवाली कुंजी भी नहीं।
कनेक्शन सेटिंग्स
अपने क्लाइंट को अपनी कुंजी के क्षेत्र वाले SMTP होस्ट पर पॉइंट करें। क्षेत्र कुंजी के प्रीफ़िक्स से पता चलता है: bk_eu1_... कुंजी eu1 होस्ट से भेजती है, और bk_us1_... कुंजी us1 से। दूसरे क्षेत्र की कुंजी से प्रमाणीकरण करने पर 535 जवाब मिलता है, जिसमें उपयोग किए जाने वाले सही होस्ट का नाम होता है।
| क्षेत्र | होस्ट |
|---|---|
| EU | eu1.smtp.bird.com |
| US | us1.smtp.bird.com |
| पोर्ट | एन्क्रिप्शन |
|---|---|
| 465 | इम्प्लिसिट TLS (SMTPS) |
| 587 | STARTTLS |
| 2525 | STARTTLS |
आपका क्लाइंट जो भी सपोर्ट करता हो, उसका उपयोग करें:
- पोर्ट 465, implicit TLS (SMTPS)। कनेक्शन पहले बाइट से ही एन्क्रिप्टेड होता है, किसी भी कमांड के भेजे जाने से पहले। अधिकांश लाइब्रेरी में यह "SSL/TLS" या "SMTPS" विकल्प होता है।
- पोर्ट 587 और 2525, STARTTLS। कनेक्शन plaintext में खुलता है और ऑथेंटिकेशन से पहले
STARTTLSकमांड के ज़रिए TLS में अपग्रेड होता है। यह "STARTTLS" विकल्प है, जिसे कभी-कभी सीधे "TLS" कहा जाता है। अगर आपका नेटवर्क 587 को ब्लॉक करता है, तो 2525 चुनें।
TLS संस्करण: पोर्ट 465, 587 और 2525, TLS 1.2 और TLS 1.3 को सपोर्ट करते हैं। अपने क्लाइंट को TLS 1.2 या उसके बाद का संस्करण उपयोग करने के लिए कॉन्फ़िगर करें। TLS 1.0 और TLS 1.1 सपोर्ट नहीं किए जाते।
दोनों ही तरीकों में आपके क्रेडेंशियल भेजे जाने से पहले सेशन एन्क्रिप्ट हो जाता है, इसलिए वे कभी खुले रूप में नहीं जाते: 587 और 2525 पर STARTTLS चलने तक AUTH अस्वीकार किया जाता है। पोर्ट 25 सबमिशन के लिए उपलब्ध नहीं है।
ऑथेंटिकेशन
AUTH PLAIN या AUTH LOGIN से ऑथेंटिकेट करें। यूज़रनेम शाब्दिक स्ट्रिंग bird है, और पासवर्ड आपकी API कुंजी है:
Username: bird
Password: bk_eu1_your_api_keyयूज़रनेम एक निश्चित शाब्दिक मान है और इसकी अपनी कोई पहचान नहीं है। ऑथेंटिकेशन पासवर्ड फ़ील्ड में दी गई API कुंजी से होता है। अधिकांश SMTP टूल में आप अपनी API कुंजी पासवर्ड फ़ील्ड में पेस्ट करते हैं और यूज़रनेम को bird पर सेट करते हैं। कुंजी को रद्द करने पर कुछ ही सेकंड में उसके ज़रिए SMTP भेजना बंद हो जाता है, चालू कनेक्शन के बीच भी।
क्या संदेश से आता है, और क्या कुंजी के कॉन्फ़िगरेशन से
MIME संदेश में जिस चीज़ की स्वाभाविक जगह होती है, वह संदेश से ही ली जाती है: From, To, Cc और Reply-To हेडर, विषय, HTML और टेक्स्ट बॉडी, और अटैचमेंट व इनलाइन इमेज। प्राप्तकर्ता SMTP envelope (RCPT TO) से लिए जाते हैं। RCPT TO में मौजूद जो पता किसी दिखने वाले To या Cc हेडर में नहीं है, उसे Bcc माना जाता है। एक संदेश में to, cc और bcc मिलाकर अधिकतम 50 प्राप्तकर्ता हो सकते हैं, और संदेश का कुल आकार 20 MB तक सीमित है।
जिन भेजने के विकल्पों की MIME संदेश में कोई मानक जगह नहीं होती, वे कुंजी के SMTP कॉन्फ़िगरेशन से आते हैं। इनमें IP पूल, श्रेणी, टैग, और ओपन व क्लिक ट्रैकिंग शामिल हैं। बिना कॉन्फ़िगर की गई कुंजी आपके संगठन का डिफ़ॉल्ट पूल, transactional श्रेणी और चालू ट्रैकिंग उपयोग करती है। कुंजी को Email > SMTP में कॉन्फ़िगर करें, या SMTP config API को कॉल करें। जब किसी एप्लिकेशन को अलग डिफ़ॉल्ट चाहिए हों, तो उसे उसकी अपनी कुंजी दें। बदलाव क्लाइंट को दोबारा कनेक्ट किए बिना नए संदेशों पर लागू होते हैं।
एक पूरा सेशन
पोर्ट 465 पर क्लाइंट पहले TLS कनेक्शन खोलता है, फिर पूरा SMTP संवाद उसी के अंदर चलाता है:
... TLS handshake ...
S: 220 eu1.smtp.bird.com ESMTP Service Ready
C: EHLO myapp
S: 250-Hello myapp
250-PIPELINING
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-CHUNKING
250-AUTH PLAIN LOGIN
250-SIZE 20971520
250 LIMITS RCPTMAX=50
C: AUTH PLAIN <base64 of bird + key>
S: 235 2.0.0 Authentication succeeded
C: MAIL FROM:<news@yourdomain.com>
C: RCPT TO:<delivered@messagebird.dev>
C: DATA
... your MIME message ...
C: .
S: 250 2.0.0 Ok: queued as em_01ky7ma8y2es1s2akzk53tmjn0पोर्ट 587 या 2525 पर क्लाइंट प्लेनटेक्स्ट में कनेक्ट करता है, कनेक्शन को अपग्रेड करने के लिए STARTTLS भेजता है, फिर वही संवाद TLS के अंदर चलाता है। अपग्रेड पूरा होने तक AUTH उपलब्ध नहीं होता:
S: 220 eu1.smtp.bird.com ESMTP Service Ready
C: EHLO myapp
S: 250-Hello myapp
250-PIPELINING
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-CHUNKING
250-STARTTLS
250-SIZE 20971520
250 LIMITS RCPTMAX=50
C: STARTTLS
S: 220 2.0.0 Ready to start TLS
... TLS handshake ...
C: EHLO myapp
S: 250-Hello myapp
250-PIPELINING
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-CHUNKING
250-AUTH PLAIN LOGIN
250-SIZE 20971520
250 LIMITS RCPTMAX=50
C: AUTH PLAIN <base64 of bird + key>
S: 235 2.0.0 Authentication succeeded
C: MAIL FROM:<news@yourdomain.com>
C: RCPT TO:<delivered@messagebird.dev>
C: DATA
... your MIME message ...
C: .
S: 250 2.0.0 Ok: queued as em_01ky7ma8y2es1s2akzk53tmjn0अंतिम 250 कतार में रखे गए संदेश की ID लौटाता है, यह वही em_... ID है जो आपको API से मिलती। आप इस ID से संदेश को ईमेल लॉग में या GET /v1/email/messages/{message_id} के ज़रिए खोज सकते हैं।
सुरक्षित रूप से फिर से प्रयास करना
पाइपलाइन संदेश स्वीकार करती है और उसे एसिंक्रोनस रूप से डिलीवर करती है, और कनेक्शन टूटने पर SMTP क्लाइंट तेज़ी से फिर से प्रयास करते हैं। फिर से प्रयास को सुरक्षित बनाने के लिए संदेश में X-Bird-Idempotency-Key हेडर जोड़ें: रिटेंशन अवधि के भीतर दोहराया गया संदेश दूसरी प्रति भेजने के बजाय पहले से कतार में रखे गए संदेश की ID लौटाता है। ऐसा मान इस्तेमाल करें जो उस तार्किक संदेश के लिए स्थिर रहे, जैसे ऑर्डर ID या नोटिफ़िकेशन ID। हर प्रयास के लिए कोई रैंडम मान न बनाएँ।
कतार में रखे गए संदेश की ID को उस एप्लिकेशन इवेंट के साथ सहेजें जिसकी वजह से संदेश भेजा गया। अगर अंतिम जवाब मिलने से पहले कनेक्शन टूट जाए, तो उसी तार्किक संदेश के लिए उसी कुंजी के साथ फिर से प्रयास करें। रिटेंशन अवधि के बाद फिर से प्रयास करने पर एक और संदेश बन सकता है। उस अवधि के बाद रिकवरी के लिए भेजे गए संदेशों का अपना रिकॉर्ड रखें।
कनेक्शन सीमाएँ
डिफ़ॉल्ट रूप से हर संगठन एक साथ अधिकतम 10 ऑथेंटिकेटेड SMTP कनेक्शन रख सकता है। कोई कनेक्शन ऑथेंटिकेशन से लेकर बंद होने तक गिना जाता है, और यह गिनती संगठन के हर सर्वर और हर API कुंजी पर लागू होती है। सीमा पूरी होने पर नए कनेक्शन को ऑथेंटिकेशन के बाद अस्थायी 421 प्रतिक्रिया मिलती है। कनेक्शन दोबारा इस्तेमाल करें, समानांतर कनेक्शन कम करें और फिर से प्रयास करें। यह सीमा संदेशों की संख्या से स्वतंत्र रूप से खुले कनेक्शन गिनती है। Email > SMTP में सीमा के मुकाबले लाइव कनेक्शन दिखते हैं।
अपने कनेक्शन पूल का आकार संगठन की कनेक्शन सीमा के अनुसार तय करें। संदेश भेजने की गति सेंड कोटा के अनुसार रखें। HTTP अनुरोध दर सीमा हेडर API अनुरोधों के बारे में बताते हैं; वे SMTP भेजने की दर की अनुमति नहीं दर्शाते।
SMTP प्रतिक्रियाओं को संभालें
असत्यापित सेंडिंग डोमेन, आरक्षित प्राप्तकर्ता डोमेन, अनुपयोगी IP पूल, ब्लॉक किए गए अटैचमेंट प्रकार या गलत रूप वाले संदेश पर SMTP स्थायी 550 प्रतिक्रिया देता है। 20 MB सीमा से बड़ा संदेश 552 लौटाता है। सेंड कोटा पार होने या 50 से अधिक प्राप्तकर्ता होने पर अस्थायी 452 मिलता है। सप्रेस किए गए प्राप्तकर्ताओं को एसिंक्रोनस रूप से संभाला जाता है: SMTP संदेश स्वीकार करता है, फिर हर सप्रेस किया गया प्राप्तकर्ता ईमेल लॉग और इवेंट में rejected के रूप में दिखता है।
इंटरफ़ेस चुनने के लिए SMTP और HTTP के सबमिशन और रिकवरी की तुलना देखें। दोनों तरीके प्राप्तकर्ता तक डिलीवरी से पहले काम को कतार में डालते हैं। email.delivered इवेंट दर्ज करता है कि प्राप्त करने वाले सर्वर ने संदेश स्वीकार कर लिया है। इस इवेंट से यह तय नहीं होता कि संदेश इनबॉक्स में पहुँचा।
अगले कदम
- भेजने वाले डोमेन: जिस डोमेन से आप भेजेंगे, उसे सत्यापित करें।
- डेडिकेटेड IP और पूल: चुनें कि कोई कुंजी किस पूल से भेजती है।
- सप्रेशन: स्वीकार किए गए प्राप्तकर्ता को संदेश क्यों नहीं मिल सकता।
- ईमेल लॉग: SMTP द्वारा लौटाई गई ID से संदेश खोजें।
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।