ईमेल भेजें C++
अनुलग्नक या iCalendar के साथ ईमेल भेजने के लिए C ++ और SMTP का उपयोग कैसे करें
डाउनलोड नि: शुल्क परीक्षणएक नियम के रूप में, SMTP प्रोटोकॉल का उपयोग ईमेल संदेश भेजने के लिए किया जाता है। संदेश भेजने के लिए आपको SMTP सर्वर तक पहुँच की आवश्यकता होती है। आपको नेटवर्क पर SMTP सर्वर का पता ढूंढना होगा, पोर्ट और एन्क्रिप्शन के प्रकार, लॉगिन और प्राधिकरण विधि का निर्धारण करना होगा। कुछ ईमेल प्रदाताओं के लिए आपको अपनी खाता सेटिंग में SMTP सर्वर तक पहुँच सक्षम करने की भी आवश्यकता होती है। इसके अलावा, यदि आप अपने सॉफ़्टवेयर में OAuth प्राधिकरण को लागू करने में सहज नहीं हैं, तो आप अपनी खाता सेटिंग में एप्लिकेशन के लिए एक अलग पासवर्ड बनाने का प्रयास कर सकते हैं।
इसलिए, यदि आपने सभी तैयारी कर ली है, तो संदेश भेजना शुरू करने का समय आ गया है। आप इसके लिए C ++ लाइब्रेरी के लिए Aspose.Email का उपयोग कर सकते हैं। सरलतम उदाहरण पर विचार करें:
auto smtpClient = MakeObject<SmtpClient>(u"smtp.gmail.com", u"login", u"password", SecurityOptions::SSLAuto);
smtpClient->Send(u"login@gmail.com", u"to@gmail.com", u"subject", u"body");
यदि आप एक साधारण टेक्स्ट ईमेल भेजना चाहते हैं तो इस विकल्प का उपयोग करें।
C ++ का उपयोग करके अटैचमेंट के साथ ईमेल भेजें
यदि आपको C ++ का उपयोग करके एक जटिल ईमेल संदेश भेजने की आवश्यकता है, तो MailMessage क्लास निश्चित रूप से काम में आएगी। उदाहरण के लिए, पिछले वाले जैसा संदेश भेजने के लिए:
auto message = MakeObject<MailMessage>(u"login@gmail.com", u"to@aspose.com", u"subject", u"body");
smtpClient->Send(message);
MailMessage क्लास एक बेहतरीन टूल है। यह आपको EML और MSG (Outlook Message Format) फ़ाइल स्वरूपों में संग्रहीत संदेश भेजने की अनुमति देता है। उपस्थिति सेट करने या पुष्टि करने के लिए आप अटैचमेंट या यहां तक कि iCalendar ऑब्जेक्ट भेजने के लिए भी इस प्रारूप का उपयोग कर सकते हैं। MailMessage से आप अपने प्राप्तकर्ताओं, Cc और Bcc प्राप्तकर्ताओं की सूची को ठीक कर सकते हैं। आप HTML मार्कअप के साथ एक ईमेल भेज सकते हैं। आप संदेश भेजने से पहले उसे विभिन्न झंडों के साथ चिह्नित भी कर सकते हैं, मेटाडेटा जोड़ सकते हैं, इसे एन्क्रिप्ट कर सकते हैं, आदि।
ईमेल भेजने के लिए लोग C ++ के लिए Aspose.Email क्यों चुनते हैं?
हां, C ++ के लिए Aspose.Email केवल ईमेल संदेश भेजने के लिए एक उपयोगिता नहीं है। यह एक व्यापक समाधान है जो ईमेल भेजने, प्राप्त करने, संग्रहीत करने और संसाधित करने से संबंधित विभिन्न कार्यों के लिए व्यापक सहायता प्रदान करता है। और आप यह सुनिश्चित कर सकते हैं कि इन कार्यों को करते समय, आप लाइब्रेरी की सीमाओं में नहीं जाएंगे। हम कई सालों से इस विषय का अध्ययन कर रहे हैं और लगातार इसकी कार्यक्षमता का विस्तार कर रहे हैं।
आपने शायद छोटे पुस्तकालयों को देखा है जो अपेक्षाकृत हाल ही में सामने आए हैं। वे आसानी से और स्वाभाविक रूप से एक साधारण समस्या का समाधान करते हैं जिसका सामना कई यूज़र करते हैं। लेकिन जैसे ही आप थोड़ा हटकर कदम रखते हैं, आपको पता चलता है कि इस सरल तकनीक का उपयोग जारी रखने से, आपको लगातार बैसाखी बांधने के लिए मजबूर किया जाता है, लाइब्रेरी प्रतिबंधों को दरकिनार करने के लिए कुछ मॉड्यूल, आपकी छोटी लाइब्रेरी से दोस्ती करने के लिए डिज़ाइन किए गए एडेप्टर, आदि और अब, आपका छोटा सा निफ्टी समाधान अब इतना अच्छा नहीं है। इसके अलावा, आप इसे सर्वर पर भेजते हैं, जहां यह नियमित रूप से और लगातार खुद को पैर में गोली मारता है, क्योंकि किसी ने भी आपके सामने बैसाखी और एकीकरण के ऐसे चिड़ियाघर का परीक्षण नहीं किया है। और चाहे आप कितनी भी कोशिश कर लें, देर-सबेर आप अभी भी इस लाइब्रेरी की सीमाओं में फंस जाएंगे। और आपको कुछ नया खोजना होगा। इसलिए, जब ईमेल के साथ काम करने की बात आती है, तो हो सकता है कि आप C ++ के लिए Aspose.Email पर विचार करना चाहें!
हम आपको SMTP के साथ काम करने के लिए न केवल एक क्लाइंट प्रदान करते हैं। सबसे पहले, यह C ++ के साथ ईमेल भेजने के लिए एकमात्र प्रोटोकॉल से बहुत दूर है। हमारे उत्पाद के साथ, आप Exchange EWS और Microsoft Graph का उपयोग करके ईमेल भेज सकते हैं!
हमने आपको इस लेख में MailMessage की संभावनाओं के बारे में पहले ही बता दिया है। लेकिन यह पत्र भेजने के लिए तैयार करने के एकमात्र उपकरण से बहुत दूर है। आप यह कर सकते हैं:
- TemplateEngine का उपयोग करके टेम्पलेट से अक्षर उत्पन्न करें;
- OST, PST और MBOX प्रारूपों के समर्थन के कारण, अक्षरों के साथ कंटेनरों को अनपैक करें;
- IMAP, POP3, Exchange EWS, और WebDAV प्रोटोकॉल के साथ-साथ Microsoft ग्राफ़ के समर्थन का उपयोग करके मेलबॉक्स से पत्र डाउनलोड करें;
- ईमेल को एक फॉर्मेट से दूसरे फॉर्मेट में कन्वर्ट करें।
Exchange Ews प्रोटोकॉल का उपयोग करके आप आसानी से एक पत्र प्राप्त कर सकते हैं। यह MAPI फ़ॉर्मेट में होगा। लेकिन आप इसे आसानी से EML फॉर्मेट में बदल सकते हैं, जिससे आप इसे बाद में SMTP प्रोटोकॉल के जरिए भेज सकेंगे। साथ ही, आप किसी भी समय प्राप्तकर्ताओं या पत्र के प्रेषक की सूची बदल सकते हैं।
C ++ और SMTP का उपयोग करके ईमेल भेजना कैसे काम करता है?
SMTP कॉन्फ़िगरेशन
जिस क्षण आप SmtpClient क्लास का एक उदाहरण बनाते हैं, कुछ खास नहीं होता है। आप बस उन सेटिंग्स की संख्या निर्दिष्ट करते हैं जो आपको संदेश भेजने के लिए भविष्य में SMTP सर्वर से कनेक्ट करने की अनुमति देंगी। पहला कॉल करने पर ही सारा जादू होता है send
तरीका। इस समय क्या हो रहा है?
वास्तव में, यह सब इस बात पर निर्भर करता है कि आपने कौन सी सेटिंग्स निर्दिष्ट की हैं। आइए कई विकल्पों पर विचार करें। मान लें कि आपने सर्वर होस्ट निर्दिष्ट किया है लेकिन पोर्ट और एन्क्रिप्शन प्रकार निर्दिष्ट नहीं किया है। इस स्थिति में, सेटिंग्स के स्वचालित चयन की व्यवस्था शुरू हो जाएगी। इस तंत्र में मानक पोर्ट और संबंधित एन्क्रिप्शन एल्गोरिदम का उपयोग करके SMTP सर्वर से कनेक्ट करने के लगातार प्रयास शामिल हैं। सबसे पहले, एन्क्रिप्टेड चैनल पर सर्वर से कनेक्ट करने का प्रयास किया जाता है। लेकिन अगर यह विफल हो जाता है, तो तंत्र एक अनएन्क्रिप्टेड कनेक्शन स्थापित करने का प्रयास करेगा। यदि आप प्रोटोकॉल के गैर-एन्क्रिप्टेड संस्करण का उपयोग नहीं करना चाहते हैं, तो निर्दिष्ट करें SecurityOptions.SSL_AUTO
सेटिंग। यह सेटिंग आपको सर्वर सेटिंग्स का चयन करने की अनुमति भी देती है, लेकिन केवल एन्क्रिप्ट किए गए चैनलों की जांच करती है।
यदि सर्वर के साथ कनेक्शन स्थापित करना संभव था, तो प्राधिकरण का प्रयास किया जाता है। यदि प्राधिकरण विफल हो जाता है, तो त्रुटि कोड भविष्य के लिए सहेजा जाता है। मैचर अन्य तरीकों से कनेक्ट करने का प्रयास करेगा। अगर आप कनेक्ट कर सकते हैं और लॉगिन कर सकते हैं तो संदेश भेजा जाएगा। यदि कनेक्शन विफल हो जाता है, तो उपयोगकर्ता को एक प्राधिकरण त्रुटि कोड प्राप्त होगा (यदि चयन के दौरान कोई सहेजा गया था)। इसलिए उपयोगकर्ता यह समझने में सक्षम होगा कि उसने गलत पासवर्ड दर्ज किया है या कुछ अन्य गलती की है। यदि पोर्ट और एन्क्रिप्शन प्रकारों में से कोई भी विकल्प फिट नहीं है और हम प्राधिकरण का प्रयास भी नहीं कर पाए हैं, तो उपयोगकर्ता को गलत सर्वर सेटिंग्स के बारे में सूचित करने में त्रुटि प्राप्त होगी।
वैसे, यह ध्यान दिया जाना चाहिए कि हमारा SMTPClient (हमारी लाइब्रेरी के अन्य सभी क्लाइंट की तरह) प्रॉक्सी के माध्यम से SMTP सर्वर से जुड़ सकता है। आप इनिशियलाइज़ेशन के दौरान प्रॉक्सी सर्वर सेटिंग्स भी निर्दिष्ट कर सकते हैं।
SMTP क्लाइंट प्राधिकरण
SmtpClient सिर्फ अलग-अलग कनेक्शन विधियों से अधिक का समर्थन करता है। यह विभिन्न प्राधिकरण विधियों का भी समर्थन करता है। उदाहरण के लिए, आप OAuth तंत्र का उपयोग कर सकते हैं। ऐसा करने के लिए, हम एक साथ कई टूल प्रदान करते हैं।
सबसे पहले, यह TokenProvider है। यह वह क्लास है जिसमें OAuth टोकन को स्टोर करने और रीफ़्रेश करने के लिए सभी आवश्यक डेटा शामिल हैं। इस स्थिति में, आपको OAuth प्राधिकरण को स्वयं निष्पादित करना होगा और OAuth सर्वर से प्राप्त सभी आवश्यक जानकारी को सहेजना होगा। RefreshToken यहां एक महत्वपूर्ण भूमिका निभाता है। यह AccessToken के साथ, प्राधिकरण सर्वर द्वारा जारी किया गया एक अतिरिक्त टोकन है। उनका अंतर यह है कि AccessToken, एक नियम के रूप में, केवल एक निश्चित अवधि के लिए मान्य है। जबकि रिफ्रेशटोकन बहुत लंबे समय तक या अनिश्चित काल के लिए वैध है (जब तक कि उपयोगकर्ता इसे रद्द नहीं करता)। RefreshToken के लिए धन्यवाद, TokenProvider वर्ग हमेशा एक AccessToken को रीफ्रेश कर सकता है यदि बाद वाला अब मान्य नहीं है।
एक अन्य विकल्प iTokenProvider इंटरफ़ेस है। इस स्थिति में, आप न केवल OAuth तंत्र को स्वयं कार्यान्वित कर सकते हैं, बल्कि इसे SMTPClient को भी पास कर सकते हैं ताकि वह आवश्यकतानुसार इसका उपयोग स्वयं कर सके।
यह ध्यान दिया जाना चाहिए कि OAuth तंत्र हमेशा आवश्यक नहीं होता है। कभी-कभी उपयोगकर्ता नाम और पासवर्ड के साथ लॉग इन करना बहुत आसान होता है। और इसके लिए, आपको अपने ईमेल खाते को फिर से कॉन्फ़िगर करने की आवश्यकता नहीं है, दो-कारक प्राधिकरण को अस्वीकार करने की आवश्यकता नहीं है, आदि एक अधिक सुरक्षित समाधान है - यह एप्लिकेशन के लिए एक अलग पासवर्ड है। इस सुविधा का लाभ उठाने के लिए, आपको अपनी ईमेल अकाउंट सेटिंग्स पर गौर करना चाहिए। सबसे अधिक संभावना है, जब आप इसे अपने खाते में सेट करते हैं, तो एप्लिकेशन का पासवर्ड स्वचालित रूप से जेनरेट हो जाएगा। इसे कहीं सेव करना न भूलें। हम कॉन्फ़िगरेशन के दौरान जितना संभव हो सके आपके एप्लिकेशन की अनुमतियों को सीमित करने की भी सलाह देते हैं। बेशक, यदि कोई हमलावर इस पासवर्ड तक पहुंच प्राप्त करता है, तो वह आपके खाते को उपयुक्त नहीं बना पाएगा, लेकिन फिर भी वह बहुत सारी अप्रिय चीजें कर सकता है। और यहां आप कुछ भी नहीं कर सकते, क्योंकि पासवर्ड ही एकमात्र ऐसी चीज है जो आपके डेटा को घुसपैठियों से बचाता है। सामान्य तौर पर, उपकरण बहुत सुविधाजनक है, लेकिन आपके खाते की सुरक्षा को कम करता है, इसे अपने जोखिम पर उपयोग करें।
C ++ के साथ SMTP के माध्यम से ईमेल भेजना
इसलिए, सर्वर से कनेक्शन स्थापित किया गया है, और प्राधिकरण सफल रहा। पत्र भेजने का समय आ गया है। भेजने के लिए, MailMessage क्लास का ऑब्जेक्ट उपयोग किया जाता है। तकनीकी रूप से, आप सभी आवश्यक डेटा को भेजने की विधि में पास कर सकते हैं। लेकिन, वास्तव में, वे अभी भी MailMessage ऑब्जेक्ट में एकत्र किए जाएंगे। इसके अलावा, EML प्रारूप को क्रमबद्ध करने के लिए MailMessage क्लास की क्षमता के कारण, हमें आवश्यक डेटा स्ट्रीम मिलती है जिसे हमारे SMTP सर्वर को पास किया जा सकता है। इस प्रकार, हम सर्वर को एक पत्र भेजने और पाठ डेटा के रूप में पत्र की सभी सामग्री को उसमें स्थानांतरित करने का आदेश देते हैं। यदि द्विआधारी डेटा पत्र में प्रेषित होता है, उदाहरण के लिए, संलग्न फ़ाइलों के रूप में, यह डेटा बेस 64 प्रारूप में एन्कोड किया गया है, और पत्र का मेटाडेटा इंगित करता है कि प्राप्तकर्ता को इसे वापस डिकोड करना होगा। SMTP सर्वर प्राप्त संदेश की शुद्धता की जांच कर सकता है (उदाहरण के लिए, सर्वर पर प्रेषक के खाते के साथ FROM फ़ील्ड की जांच करें), साथ ही संदेश के मेटाडेटा को अपने विवेक पर पूरक कर सकता है। फिर, सर्वर प्राप्तकर्ताओं को ईमेल भेजेगा, जिसकी एक सूची उसे ईमेल के मेटाडेटा से भी मिलेगी।