C# (.NET) पर ईमेल भेजना: SmtpClient से MailKit तक
\nईमेल भेजना वेब एप्लिकेशन, सूचना सेवाओं और कॉर्पोरेट सिस्टम को विकसित करने में एक प्रमुख कार्य है। .NET इकोसिस्टम में बिल्ट-इन टूल्स के साथ-साथ थर्ड-पार्टी लाइब्रेरीज़ भी हैं जो SMTP, SSL/TLS और जटिल परिदृश्यों के साथ काम करना आसान बनाती हैं। इस लेख में, हम विस्तार से जानेंगे कि क्लासिक SmtpClient और आधुनिक लाइब्रेरी MailKit का उपयोग करके C# में ईमेल कैसे भेजें।
1. बिल्ट-इन SmtpClient (System.Net.Mail)
\nक्लास SmtpClient .NET Framework और .NET Core/5+ (कुछ सीमाओं के साथ) में उपलब्ध है। यह किसी भी SMTP सर्वर के माध्यम से ईमेल भेजने को जल्दी से कॉन्फ़िगर करने की अनुमति देता है।
ईमेल भेजने का मूल उदाहरण
\nusing System.Net;\nusing System.Net.Mail;\n\nvar smtpClient = new SmtpClient("smtp.gmail.com")\n{\n Port = 587,\n Credentials = new NetworkCredential("your_email@gmail.com", "your_app_password"),\n EnableSsl = true\n};\n\nvar mailMessage = new MailMessage\n{\n From = new MailAddress("your_email@gmail.com"),\n Subject = "C# से परीक्षण ईमेल",\n Body = "नमस्ते! यह संदेश SmtpClient के माध्यम से भेजा गया है।",\n IsBodyHtml = false\n};\n\nmailMessage.To.Add("recipient@example.com");\n\ntry\n{\n smtpClient.Send(mailMessage);\n Console.WriteLine("ईमेल सफलतापूर्वक भेजा गया!");\n}\ncatch (Exception ex)\n{\n Console.WriteLine($"भेजने में त्रुटि: {ex.Message}");\n}\n\nमहत्वपूर्ण: Gmail के लिए सामान्य पासवर्ड के बजाय एप पासवर्ड की आवश्यकता होगी। अन्य सेवाओं (Yandex, Mail.ru) के लिए SMTP सेटिंग्स जांचें।
\n\nअटैचमेंट के साथ HTML ईमेल भेजना
\nvar message = new MailMessage();\nmessage.From = new MailAddress("sender@example.com");\nmessage.To.Add("user@example.com");\nmessage.Subject = "मासिक रिपोर्ट";\nmessage.IsBodyHtml = true;\nmessage.Body = "<h2>मासिक रिपोर्ट</h2><p>अटैचमेंट में PDF फ़ाइल है।</p>";\n\n// अटैचमेंट जोड़ें\nvar attachment = new Attachment(@"C:\\Reports\\report.pdf");\nmessage.Attachments.Add(attachment);\n\nusing (var client = new SmtpClient("smtp.example.com", 587))\n{\n client.Credentials = new NetworkCredential("login", "password");\n client.EnableSsl = true;\n client.Send(message);\n}\n\nअटैचमेंट किसी भी प्रकार के हो सकते हैं: चित्र, दस्तावेज़, आर्काइव। मेमोरी से भेजने के लिए MemoryStream का उपयोग करें।
2. एसिंक्रोनस भेजना
\nआधुनिक एप्लिकेशन में, थ्रेड को ब्लॉक न करना वांछनीय है। SendMailAsync का उपयोग करें:
public async Task SendEmailAsync()\n{\n using var client = new SmtpClient("smtp.example.com", 587);\n client.Credentials = new NetworkCredential("login", "password");\n client.EnableSsl = true;\n\n var message = new MailMessage("from@example.com", "to@example.com")\n {\n Subject = "एसिंक्रोनस भेजना",\n Body = "यह ईमेल एसिंक्रोनस रूप से भेजा गया है।"\n };\n\n await client.SendMailAsync(message);\n Console.WriteLine("एसिंक्रोनस रूप से भेजा गया!");\n}\n\n\n3. SmtpClient की समस्याएं और विकल्प
\nसरलता के बावजूद, SmtpClient में कमियां हैं:
- \n
- पुराना API (.NET 5+ में इसे पदावनत चिह्नित किया गया है); \n
- आधुनिक प्रमाणीकरण प्रोटोकॉल (OAuth2) का खराब समर्थन; \n
- S/MIME और विस्तारित परिदृश्यों के लिए बिल्ट-इन समर्थन का अभाव। \n
इसलिए Microsoft MailKit जैसी थर्ड-पार्टी लाइब्रेरीज़ का उपयोग करने की सलाह देता है।
\n\n4. MailKit — ईमेल के साथ काम करने के लिए आधुनिक लाइब्रेरी
\nMailKit एक क्रॉस-प्लेटफ़ॉर्म ओपन-सोर्स लाइब्रेरी है। यह SMTP, POP3, IMAP, SSL/TLS, एसिंक्रोनस, OAuth2 और बहुत कुछ का समर्थन करती है।
\n\n