C++ पर ईमेल भेजना: लाइब्रेरीज़ और कोड उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ पर ईमेल भेजना: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण



ईमेल भेजना सर्वर और डेस्कटॉप एप्लिकेशन में एक मानक कार्य है। हालाँकि C++ में मेल प्रोटोकॉल के लिए अंतर्निहित समर्थन नहीं है, फिर भी कई परिपक्व लाइब्रेरीज़ मौजूद हैं जो आपके प्रोजेक्ट में ईमेल भेजने (अटैचमेंट और TLS/SSL एन्क्रिप्शन सहित) को एकीकृत करने की अनुमति देती हैं। इस लेख में, हम तीन मुख्य दृष्टिकोणों पर विचार करेंगे: libcurl, VMime और POCO C++ Libraries का उपयोग करना।



1. libcurl का उपयोग करके ईमेल भेजना



libcurl SMTP, SMTPS और STARTTLS सहित विभिन्न प्रोटोकॉल पर डेटा ट्रांसफर के लिए एक शक्तिशाली क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी है। यह cURL प्रोजेक्ट का हिस्सा है और लगभग सभी ऑपरेटिंग सिस्टम के लिए उपलब्ध है।



libcurl की स्थापना

Ubuntu/Debian पर:

sudo apt-get install libcurl4-openssl-dev

macOS पर (Homebrew के माध्यम से):

brew install curl

Windows पर, आप पूर्व-निर्मित DLL डाउनलोड कर सकते हैं या vcpkg के माध्यम से बना सकते हैं।



उदाहरण: बिना अटैचमेंट के सरल पत्र

निम्नलिखित कोड SMTP सर्वर (SSL के साथ Gmail SMTP) से कनेक्ट होता है, प्रमाणित करता है और एक टेक्स्ट ईमेल भेजता है।

#include <iostream>#include <string>#include <curl/curl.h>

int main() { CURL *curl = curl_easy_init(); if (!curl) return 1;

// Gmail SMTP सेटिंग्स curl_easy_setopt(curl, CURLOPT_URL, "smtps://smtp.gmail.com:465"); curl_easy_setopt(curl, CURLOPT_USERNAME, "आपका_ईमेल@gmail.com"); curl_easy_setopt(curl, CURLOPT_PASSWORD, "आपका_ऐप_पासवर्ड");

// पत्र डेटा const char *payload_text = "To: प्राप्तकर्ता@example.com\\r" "From: आपका_ईमेल@gmail.com\\r" "Subject: C++ से परीक्षण पत्र\\r" "\\r" "नमस्ते! यह पत्र libcurl का उपयोग करके भेजा गया है।\\r";

curl_easy_setopt(curl, CURLOPT_MAIL_FROM, "आपका_ईमेल@gmail.com"); struct curl_slist *recipients = NULL; recipients = curl_slist_append(recipients, "प्राप्तकर्ता@example.com"); curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients); curl_easy_setopt(curl, CURLOPT_READDATA, payload_text);

// भेजना CURLcode res = curl_easy_perform(curl); if (res != CURLE_OK) std::cerr << "त्रुटि: " << curl_easy_strerror(res) << std::endl;

curl_slist_free_all(recipients); curl_easy_cleanup(curl); return 0;}


libcurl की विशेषताएं

  • SMTP, SMTPS (SSL/TLS) और STARTTLS के लिए समर्थन।
  • MIME फ़ॉर्मेटिंग (मैन्युअल या curl_mime के साथ) के माध्यम से अटैचमेंट भेजने की क्षमता।
  • निम्न-स्तरीय नियंत्रण — आप मैन्युअल रूप से हेडर और पत्र का मुख्य भाग बनाते हैं।
  • उत्कृष्ट दस्तावेज़ीकरण और सामुदायिक समर्थन।


2. VMime लाइब्रेरी



VMime ईमेल के साथ काम करने के लिए एक विशेष C++ लाइब्रेरी है। यह MIME, अटैचमेंट और सभी आधुनिक मेल प्रोटोकॉल के समर्थन के साथ संदेश बनाने, पार्स करने और भेजने के लिए एक उच्च-स्तरीय API प्रदान करता है।



VMime की स्थापना

CMake का उपयोग करके स्रोत से बनाने की अनुशंसा की जाती है:

git clone https://github.com/kisli/vmime.gitcd vmimemkdir build && cd buildcmake .. -DVMIME_BUILD_SAMPLES=ONmake -j4sudo make install

SSL के साथ काम करने के लिए libgsasl और libssl-dev लाइब्रेरी की आवश्यकता होगी।



उदाहरण: अटैचमेंट के साथ पत्र भेजना

#include <vmime/vmime.hpp>#include <iostream>

int main() { try { // सत्र बनाएं vmime::shared_ptr<vmime::net::session> session = vmime::net::session::create();

// ट्रांसपोर्ट कॉन्फ़िगर करें (SSL के साथ SMTP) vmime::shared_ptr<vmime::net::transport> trans

अनुशंसाएँ