Go (Golang) पर ईमेल भेजना: लाइब्रेरी और कोड उदाहरण
ईमेल भेजना किसी भी वेब एप्लिकेशन के लिए एक मुख्य कार्य है: उपयोगकर्ता पंजीकरण, पासवर्ड रीसेट, सूचनाएं और न्यूज़लेटर। Go (Golang) भाषा में SMTP के साथ काम करने के लिए मानक उपकरणों के साथ-साथ शक्तिशाली तृतीय-पक्ष लाइब्रेरी भी हैं जो HTML टेम्पलेट, अटैचमेंट और विभिन्न ईमेल सेवाओं के समर्थन के साथ ईमेल भेजना आसान बनाती हैं। इस लेख में, हम विस्तार से देखेंगे कि Go पर ईमेल कैसे भेजें, लोकप्रिय लाइब्रेरी का विश्लेषण करेंगे और व्यावहारिक कोड उदाहरण प्रस्तुत करेंगे।
मानक लाइब्रेरी net/smtp
पैकेज net/smtp Go की मानक लाइब्रेरी का हिस्सा है और SMTP सर्वर के माध्यम से ईमेल भेजने के लिए न्यूनतम फ़ंक्शन प्रदान करता है। यह सरल टेक्स्ट संदेशों के लिए उपयुक्त है, लेकिन RFC 5322 के अनुसार हेडर और ईमेल बॉडी को मैन्युअल रूप से तैयार करने की आवश्यकता होती है।
सरल टेक्स्ट ईमेल भेजने का उदाहरण:
package main
import ( "fmt" "net/smtp")
func main() { // SMTP सर्वर से कनेक्ट करने के लिए डेटा smtpHost := "smtp.example.com" smtpPort := "587" from := "sender@example.com" password := "your_password" to := []string{"recipient@example.com"}
// ईमेल बॉडी तैयार करें (हेडर के साथ अनिवार्य) subject := "Subject: Go से नमस्ते!" mime := "MIME-version: 1.0;Content-Type: text/plain; charset=\\"UTF-8\\";
" body := "यह Go का उपयोग करके भेजा गया एक परीक्षण ईमेल है।" msg := []byte(subject + mime + body)
// प्रमाणीकरण auth := smtp.PlainAuth("", from, password, smtpHost)
// भेजना err := smtp.SendMail(smtpHost+":"+smtpPort, auth, from, to, msg) if err != nil { fmt.Println("भेजने में त्रुटि:", err) return } fmt.Println("ईमेल सफलतापूर्वक भेजा गया!")}net/smtp की सीमाएं:
- मैन्युअल Base64 एन्कोडिंग के बिना अटैचमेंट का समर्थन नहीं करता।
- MIME हेडर को स्वयं फ़ॉर्मेट करने की आवश्यकता होती है।
- इमेज के साथ HTML ईमेल भेजने के लिए असुविधाजनक।
लाइब्रेरी gomail/v2
Go पर ईमेल भेजने के लिए सबसे लोकप्रिय तृतीय-पक्ष लाइब्रेरी में से एक gomail (पैकेज gopkg.in/mail.v2) है। यह ईमेल के साथ काम करने के लिए एक सुविधाजनक API प्रदान करता है: अटैचमेंट, HTML और टेक्स्ट भागों का समर्थन, SMTP कनेक्शन कॉन्फ़िगरेशन, और SSL/TLS के माध्यम से भेजने की क्षमता।
स्थापना:
go get gopkg.in/mail.v2अटैचमेंट के साथ HTML ईमेल भेजने का उदाहरण:
package main
import ( "fmt" "gopkg.in/mail.v2")
func main() { m := mail.NewMessage() m.SetHeader("From", "sender@example.com") m.SetHeader("To", "recipient@example.com") m.SetHeader("Subject", "अटैचमेंट के साथ HTML ईमेल")
// वैकल्पिक भाग: टेक्स्ट और HTML m.SetBody("text/plain", "यदि आप यह टेक्स्ट देख रहे हैं, तो आपका क्लाइंट HTML का समर्थन नहीं करता।") m.AddAlternative("text/html", "<h1>नमस्ते!</h1><p>यह ईमेल का HTML संस्करण है।</p>")
// अटैचमेंट जोड़ें m.Attach("/path/to/file.pdf")
// SMTP क्लाइंट कॉन्फ़िगरेशन d := mail.NewDialer("smtp.example.com", 587, "sender@example.com", "your_password") d.StartTLSPolicy = mail.MandatoryStartTLS
if err := d.DialAndSend(m); err != nil { fmt.Println("त्रुटि:", err) return } fmt.Println("ईमेल भेजा गया!")}gomail के लाभ:
- सरल और सहज API।
- स्वचालित MIME हेडर निर्माण।
- अटैचमेंट और एम्बेडेड इमेज (CID) का समर्थन।
- SSL/TLS और StartTLS के साथ काम करना।
लाइब्रेरी go-smtp (emersion/go-smtp)
emersion की लाइब्रेरी go-smtp एक अधिक निम्न-स्तरीय विकल्प है जो SMTP कनेक्शन पर पूर्ण नियंत्रण देती है। यह उपयोगी है यदि आपको