SMTP से ईमेल भेजें
अगर आपका एप्लिकेशन पहले से SMTP सपोर्ट करता है, तो इसके host, port और credentials बदलकर हमारे relay की ओर पॉइंट करें। फ़्रेमवर्क, कंटेंट-मैनेजमेंट सिस्टम, प्रिंटर, और SMTP relay को मेल सबमिट करने में सक्षम अन्य सॉफ़्टवेयर इस पथ का उपयोग कर सकते हैं।
SMTP से सबमिट किया गया मेल ठीक उसी तरह संभाला जाता है जैसे email API से भेजा गया मेल: वही डोमेन सत्यापन, IP पूल, DKIM साइनिंग, सप्रेशन हैंडलिंग, ट्रैकिंग, इवेंट और एनालिटिक्स। SMTP उसी प्रोडक्ट का एक दूसरा रास्ता है, इसलिए जो कुछ आप एक के लिए सेट करते हैं वह दूसरे पर भी लागू होता है।
जब आप अपने एप्लिकेशन का मौजूदा मैसेज-बिल्डिंग कोड बनाए रखना चाहें, तो SMTP relay सर्विस चुनें। जब आपको स्ट्रक्चर्ड रिक्वेस्ट फ़ील्ड या स्टोर किए गए टेम्प्लेट चाहिए, तो email API चुनें। SMTP कंटेंट MIME मैसेज से और भेजने के विकल्प API key के कॉन्फ़िगरेशन से लेता है।
पहले आपको क्या चाहिए
- एक सत्यापित भेजने वाला डोमेन। MAIL FROM में (और मैसेज From हेडर में) आप जो पता डालते हैं, वह इस वर्कस्पेस में आपके सत्यापित डोमेन का होना चाहिए। देखें भेजने वाले डोमेन।
- emails स्कोप वाली एक API key। SMTP आपकी सामान्य API keys का उपयोग करता है और इसके लिए अलग SMTP क्रेडेंशियल की ज़रूरत नहीं है। Developers > API keys में ईमेल भेजना सक्षम करके एक key बनाएँ। emails स्कोप के बिना key भेज नहीं सकती, और केवल-verify key भी नहीं भेज सकती।
कनेक्शन सेटिंग्स
अपने क्लाइंट को आपकी key के क्षेत्र (region) के SMTP host की ओर पॉइंट करें। क्षेत्र key में ही प्रीफ़िक्स के रूप में होता है: bk_eu1_... key eu1 host से भेजती है, bk_us1_... key us1 से। दूसरे क्षेत्र की key से प्रमाणित करने पर 535 reply मिलता है जिसमें सही host का नाम बताया जाता है।
| क्षेत्र | Host |
|---|---|
| EU | eu1.smtp.bird.com |
| US | us1.smtp.bird.com |
| Port | एन्क्रिप्शन |
|---|---|
| 465 | इम्प्लिसिट TLS (SMTPS) |
| 587 | STARTTLS |
| 2525 | STARTTLS |
आपका क्लाइंट जो सपोर्ट करे वह चुनें:
- Port 465, इम्प्लिसिट TLS (SMTPS). कनेक्शन पहले बाइट से ही एन्क्रिप्टेड होता है, कोई भी कमांड भेजे जाने से पहले। अधिकतर लाइब्रेरीज़ में यह "SSL/TLS" या "SMTPS" विकल्प है।
- Port 587 और 2525, STARTTLS. कनेक्शन प्लेनटेक्स्ट में खुलता है और प्रमाणीकरण से पहले STARTTLS कमांड से TLS में अपग्रेड होता है। यह "STARTTLS" विकल्प है, जिसे कभी-कभी सीधे "TLS" लेबल किया जाता है। अगर आपका नेटवर्क 587 ब्लॉक करता है तो 2525 चुनें।
दोनों तरीकों में सेशन आपके credentials भेजे जाने से पहले एन्क्रिप्ट हो जाता है, इसलिए वे कभी बिना एन्क्रिप्शन के नहीं जाते: 587 और 2525 पर STARTTLS पूरा होने तक AUTH अस्वीकार रहता है। सबमिशन के लिए port 25 उपलब्ध नहीं है।
प्रमाणीकरण
AUTH PLAIN या AUTH LOGIN से प्रमाणित करें। उपयोगकर्ता नाम शाब्दिक स्ट्रिंग bird है, और पासवर्ड आपकी API key है:
कोड उदाहरण
Username: bird
Password: bk_eu1_your_api_keyउपयोगकर्ता नाम एक निश्चित शाब्दिक मान है और इसकी अपनी कोई पहचान नहीं है। पासवर्ड फ़ील्ड में API key ही प्रमाणित करती है। अधिकतर SMTP टूल्स में आप अपनी API key पासवर्ड फ़ील्ड में पेस्ट करें और उपयोगकर्ता नाम bird सेट करें। key रद्द करने से उसकी SMTP भेजने की क्षमता सेकंडों में बंद हो जाती है, चालू कनेक्शन सहित।
क्या मैसेज से आता है, और क्या key के कॉन्फ़िगरेशन से आता है
MIME मैसेज में जिसकी स्वाभाविक जगह है वह सब मैसेज से आता है: From, To, Cc, और Reply-To हेडर, विषय, HTML और टेक्स्ट बॉडी, और अटैचमेंट व इनलाइन इमेज। प्राप्तकर्ता SMTP एनवेलप (RCPT TO) से लिए जाते हैं। RCPT TO में कोई पता जो किसी दृश्यमान To या Cc हेडर में नहीं है, उसे Bcc माना जाता है। एक मैसेज में to, cc और bcc मिलाकर अधिकतम 50 प्राप्तकर्ता हो सकते हैं, और कुल मैसेज आकार 20 MB तक सीमित है।
भेजने के जो विकल्प MIME मैसेज में मानक स्थान नहीं रखते, वे key के SMTP कॉन्फ़िगरेशन से आते हैं। इनमें IP पूल, कैटेगरी, टैग, और ओपन व क्लिक ट्रैकिंग शामिल हैं। बिना कॉन्फ़िगर की गई key आपके संगठन का डिफ़ॉल्ट पूल, transactional कैटेगरी, और ट्रैकिंग सक्षम उपयोग करती है। key को Email > SMTP में कॉन्फ़िगर करें, या SMTP config API कॉल करें। जब किसी एप्लिकेशन को अलग डिफ़ॉल्ट चाहिए, तो उसे अपनी अलग key दें। बदलाव क्लाइंट को दोबारा कनेक्ट किए बिना नए मैसेज पर लागू होते हैं।
एक पूरा सेशन
Port 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_01ky7ma8y2es1s2akzk53tmjn0Port 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 से मैसेज को Email log में या GET /v1/email/messages/{message_id} के ज़रिए खोज सकते हैं।
सुरक्षित रूप से फिर से प्रयास करना
पाइपलाइन मैसेज स्वीकार करती है और एसिंक्रोनस रूप से डिलीवर करती है, और SMTP क्लाइंट कनेक्शन टूटने पर आक्रामक रूप से फिर से प्रयास करते हैं। फिर से प्रयास को सुरक्षित बनाने के लिए मैसेज में X-Bird-Idempotency-Key हेडर जोड़ें: रिटेंशन विंडो के भीतर दोहराव पहले से कतार में लगे मैसेज की ID लौटाता है, दूसरी प्रति भेजने के बजाय। ऐसा मान उपयोग करें जो तार्किक मैसेज के लिए स्थिर हो, जैसे ऑर्डर ID या नोटिफ़िकेशन ID। हर प्रयास के लिए रैंडम मान बनाने से बचें।
कतार में लगे मैसेज की ID को उस एप्लिकेशन इवेंट के साथ रखें जिसने भेजने को ट्रिगर किया। अगर अंतिम reply मिलने से पहले कनेक्शन टूट जाए, तो उसी key के साथ उस तार्किक मैसेज को फिर से भेजें। रिटेंशन विंडो के बाद, फिर से प्रयास एक और मैसेज बना सकता है। उस विंडो के बाद रिकवरी के लिए अपना भेजने का रिकॉर्ड सुरक्षित रखें।
कनेक्शन सीमाएँ
प्रत्येक संगठन डिफ़ॉल्ट रूप से अधिकतम 10 समवर्ती प्रमाणित SMTP कनेक्शन रख सकता है। कनेक्शन प्रमाणीकरण से बंद होने तक गिना जाता है, संगठन के हर सर्वर और API key में। सीमा पर, एक और कनेक्शन को प्रमाणीकरण के बाद क्षणिक 421 प्रतिक्रिया मिलती है। कनेक्शन पुन: उपयोग करें, समवर्तिता कम करें, और फिर से प्रयास करें। सीमा मैसेज वॉल्यूम से स्वतंत्र रूप से खुले कनेक्शन गिनती है। Email > SMTP सीमा के मुकाबले लाइव कनेक्शन दिखाता है।
अपने कनेक्शन पूल का आकार संगठन की कनेक्शन सीमा के अनुसार रखें। सबमिशन को भेजने की कोटा के अनुसार नियंत्रित करें। HTTP अनुरोध दर सीमा हेडर API रिक्वेस्ट का वर्णन करते हैं; ये SMTP भेजने की दर की अनुमति नहीं हैं।
SMTP प्रतिक्रियाएँ संभालें
SMTP असत्यापित भेजने वाले डोमेन, आरक्षित प्राप्तकर्ता डोमेन, अनुपयोगी IP पूल, ब्लॉक किए गए अटैचमेंट प्रकार, या विकृत मैसेज को स्थायी 550 प्रतिक्रिया से रिपोर्ट करता है। 20 MB सीमा से अधिक मैसेज 552 लौटाता है। भेजने की कोटा पार होने या 50 से अधिक प्राप्तकर्ता होने पर क्षणिक 452 मिलता है। सप्रेस किए गए प्राप्तकर्ता एसिंक्रोनस रूप से संभाले जाते हैं: SMTP मैसेज स्वीकार करता है, फिर प्रत्येक सप्रेस प्राप्तकर्ता email log और इवेंट में rejected के रूप में दिखता है।
इंटरफ़ेस निर्णय के लिए, SMTP और HTTP सबमिशन और रिकवरी की तुलना करें। दोनों पथ प्राप्तकर्ता डिलीवरी से पहले कार्य कतार में लगाते हैं। एक email.delivered इवेंट प्राप्त करने वाले सर्वर द्वारा स्वीकृति दर्ज करता है। वह इवेंट इनबॉक्स प्लेसमेंट स्थापित नहीं करता।
अगले कदम
- भेजने वाले डोमेन: जिस डोमेन से भेजेंगे उसे सत्यापित करें।
- डेडिकेटेड IP और पूल: चुनें कि key किस पूल से भेजे।
- सप्रेशन: स्वीकृत प्राप्तकर्ता को मैसेज क्यों नहीं मिल सकता।
- Email log: SMTP द्वारा लौटाई गई ID से मैसेज खोजें।
संबंधित संसाधन
इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।