Go (Golang) पर ईमेल भेजना: लाइब्रेरी और टूल का पूर्ण अवलोकन
\n\nआधुनिक वेब डेवलपमेंट में, सूचनाओं, पंजीकरण, पासवर्ड रिकवरी और न्यूज़लेटर के लिए ईमेल भेजना एक प्रमुख कार्य बना हुआ है। Go (Golang) भाषा SMTP सर्वर के साथ एकीकरण के कई प्रभावी तरीके प्रदान करती है। इस लेख में, हम मानक लाइब्रेरी net/smtp, लोकप्रिय तृतीय-पक्ष लाइब्रेरी gomail और उन्नत go-smtp पर चर्चा करेंगे। आप सीखेंगे कि सरल टेक्स्ट और HTML ईमेल कैसे भेजें, अटैचमेंट कैसे जोड़ें और सुरक्षित कनेक्शन कैसे कॉन्फ़िगर करें।
1. मानक लाइब्रेरी net/smtp
\n\nपैकेज net/smtp Go में निर्मित है और इसे अतिरिक्त स्थापना की आवश्यकता नहीं है। यह SMTP सर्वर से कनेक्ट करने, प्रमाणीकरण और संदेश भेजने के लिए बुनियादी फ़ंक्शन प्रदान करता है। हालांकि, आधुनिक आवश्यकताओं (HTML, अटैचमेंट, SSL/TLS) के लिए अधिक कोड लिखने की आवश्यकता होगी।
टेक्स्ट ईमेल भेजने का सरल उदाहरण
\n\npackage main\n\nimport (\n "fmt"\n "net/smtp"\n)\n\nfunc main() {\n // SMTP सर्वर सेटिंग्स (Gmail के लिए उदाहरण)\n smtpHost := "smtp.gmail.com"\n smtpPort := "587"\n from := "your_email@gmail.com"\n password := "your_app_password"\n to := []string{"recipient@example.com"}\n\n // ईमेल का विषय और बॉडी (सबसे सरल प्रारूप)\n subject := "Subject: Go से परीक्षण ईमेल\\n"\n body := "नमस्ते! यह संदेश net/smtp का उपयोग करके भेजा गया है।"\n msg := []byte(subject + "\\n" + body)\n\n // प्रमाणीकरण\n auth := smtp.PlainAuth("", from, password, smtpHost)\n\n // भेजना\n err := smtp.SendMail(smtpHost+":"+smtpPort, auth, from, to, msg)\n if err != nil {\n fmt.Println("भेजने में त्रुटि:", err)\n return\n }\n fmt.Println("ईमेल सफलतापूर्वक भेजा गया!")\n}\n\n\nमहत्वपूर्ण: Gmail के लिए, आपको ऐप पासवर्ड (मुख्य पासवर्ड नहीं) का उपयोग करना होगा और अविश्वसनीय ऐप्स के लिए एक्सेस की अनुमति देनी होगी। अन्य सेवाओं (Yandex, Mail.ru) के लिए पैरामीटर भिन्न हो सकते हैं।
\n\nnet/smtp के माध्यम से HTML ईमेल भेजना
\n\nHTML ईमेल भेजने के लिए, आपको स्पष्ट रूप से Content-Type हेडर निर्दिष्ट करना होगा:
package main\n\nimport (\n "fmt"\n "net/smtp"\n)\n\nfunc main() {\n smtpHost := "smtp.gmail.com"\n smtpPort := "587"\n from := "your_email@gmail.com"\n password := "your_app_password"\n to := []string{"recipient@example.com"}\n\n // MIME हेडर बनाएं\n headers := make(map[string]string)\n headers["From"] = from\n headers["To"] = "recipient@example.com"\n headers["Subject"] = "Go से HTML ईमेल"\n headers["MIME-Version"] = "1.0"\n headers["Content-Type"] = "text/html; charset=\\"UTF-8\\""\n\n // संदेश तैयार करें\n message := ""\n for k, v := range headers {\n message += fmt.Sprintf("%s: %s\\r\\n", k, v)\n }\n message += "\\r\\n" + "<h1>नमस्ते!</h1><p>यह <b>HTML</b> ईमेल है।</p>"\n\n auth := smtp.PlainAuth("", from, password, smtpHost)\n err := smtp.SendMail(smtpHost+":"+smtpPort, auth, from, to, []byte(message))\n if err != nil {\n fmt.Println("त्रुटि:", err)\n }\n}\n\n\nnet/smtp की कमी — अटैचमेंट और जटिल मल्टीपार्ट ईमेल संरचना के लिए समर्थन का अभाव। ऐसे कार्यों के लिए विशेष लाइब्रेरी का उपयोग करना बेहतर है।
2. gomail लाइब्रेरी
\n\nGomail Go पर ईमेल भेजने के लिए सबसे लोकप्रिय तृतीय-पक्ष लाइब्रेरी में से एक है। यह एक सुविधाजनक API, HTML, अटैचमेंट, इमेज एम्बेड करने, SSL/TLS और कस्टमाइज़ेबल हेडर के लिए समर्थन प्रदान करता है।
\n\nस्थापना
\n\ngo get gopkg.in/mail.v2\n\n\nअटैचमेंट के साथ HTML ईमेल भेजने का उदाहरण
\n\npackage main\n\nimport (\n "crypto/tls"\n "fmt"\n gomail "gopkg.in/mail.v2"\n)\n\nfunc main() {\n m := gomail.NewMessage(