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-devmacOS पर (Homebrew के माध्यम से):
brew install curlWindows पर, आप पूर्व-निर्मित 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 installSSL के साथ काम करने के लिए 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