C++ पर ईमेल भेजना: लाइब्रेरीज़ और कार्यान्वयन

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

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

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

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



ईमेल भेजना कई अनुप्रयोगों के लिए एक महत्वपूर्ण कार्य है: मॉनिटरिंग और सूचना प्रणालियों से लेकर पूर्ण ईमेल क्लाइंट तक। C++ भाषा में SMTP प्रोटोकॉल के लिए अंतर्निहित समर्थन नहीं है, हालांकि, शक्तिशाली तृतीय-पक्ष लाइब्रेरीज़ मौजूद हैं जो ईमेल भेजने को आसानी से एकीकृत करने की अनुमति देती हैं। इस लेख में, हम सबसे लोकप्रिय टूल, उनकी स्थापना पर चर्चा करेंगे और कार्यशील कोड उदाहरण प्रस्तुत करेंगे।



C++ पर ईमेल भेजने के मुख्य तरीके



C++ पर ईमेल भेजने के तीन मुख्य दृष्टिकोण हैं:



  • libcurl का उपयोग — सबसे लोकप्रिय और लचीली लाइब्रेरी। SMTP, SMTP-SSL, SMTP-STARTTLS का समर्थन करती है।
  • VMime का उपयोग — MIME संदेशों, एन्क्रिप्शन और अटैचमेंट के साथ काम करने के लिए विशेष लाइब्रेरी।
  • सॉकेट के साथ सीधा काम — निम्न-स्तरीय दृष्टिकोण जिसमें SMTP प्रोटोकॉल के मैन्युअल कार्यान्वयन की आवश्यकता होती है।


इस गाइड में, हम libcurl पर ध्यान केंद्रित करेंगे क्योंकि यह सबसे बहुमुखी और व्यापक रूप से उपयोग किया जाने वाला समाधान है।



libcurl की स्थापना



libcurl के माध्यम से SMTP के साथ काम करने के लिए, आपको लाइब्रेरी और उसकी हेडर फ़ाइलें स्थापित करनी होंगी। विभिन्न ऑपरेटिंग सिस्टम के लिए उदाहरण:



# Ubuntu / Debiansudo apt-get install libcurl4-openssl-dev

# CentOS / Fedorasudo yum install libcurl-devel

# macOS (Homebrew के माध्यम से)brew install curl

# Windows (vcpkg के माध्यम से)vcpkg install curl


सुनिश्चित करें कि आपके curl बिल्ड में SMTP और SSL प्रोटोकॉल के लिए समर्थन शामिल है। इसे निम्न कमांड से जांचा जा सकता है:



curl --version | grep -i smtp


सरल उदाहरण: टेक्स्ट ईमेल भेजना



libcurl का उपयोग करके Gmail SMTP सर्वर के माध्यम से ईमेल भेजने का एक बुनियादी उदाहरण देखें। सफलतापूर्वक भेजने के लिए, आपको Gmail के लिए ऐप पासवर्ड (App Password) की आवश्यकता होगी।



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

// ईमेल डेटा स्थानांतरित करने के लिए संरचनाstruct upload_status { int lines_read; const char **payload_text;};

// ईमेल बॉडी पढ़ने के लिए कॉलबैक फ़ंक्शनstatic size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp) { struct upload_status *upload_ctx = (struct upload_status *)userp; const char *data;

if (upload_ctx->lines_read < 5) { data = upload_ctx->payload_text[upload_ctx->lines_read]; if (data) { size_t len = strlen(data); memcpy(ptr, data, len); upload_ctx->lines_read++; return len; } } return 0;}

int main(void) { CURL *curl; CURLcode res = CURLE_OK; struct curl_slist *recipients = NULL; struct upload_status upload_ctx;

// ईमेल का टेक्स्ट (प्रत्येक पंक्ति एक अलग तत्व है) const char *payload_text[] = { "From: आपका नाम <youremail@gmail.com>\\r", "To: प्राप्तकर्ता <recipient@example.com>\\r", "Subject: C++ से नमस्ते!\\r", "\\r", // खाली पंक्ति — हेडर और बॉडी का विभाजक "यह libcurl का उपयोग करके C++ पर भेजा गया एक परीक्षण ईमेल है।\\r", NULL };

upload_ctx.lines_read = 0; upload_ctx.payload_text = payload_text;

curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init();

if (curl) { // Gmail SMTP सर्वर का कॉन्फ़िगरेशन curl_easy_setopt(curl, CURLOPT_URL, "smtp://smtp.gmail.com:587"); curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL); curl_easy_setopt(curl, CURLOPT_USERNAME, "youremail@gmail.com"); curl_easy_setopt(curl, CURLOPT_PASSWORD, "आपका_ऐप_पासवर्ड");

// प्रेषक और प्राप्तकर्ता निर्दिष्ट करें curl_easy_setopt(curl, CURLOPT_MAIL_FROM, "<youremail@gmail.com>"); recipients = curl_slist_append(recipients, "<recipie

अनुशंसाएँ