Gomail का परिचय

Gomail, गोलांग में ईमेल भेजने के लिए एक सरल और प्रभावी पैकेज है। इसका पूरी तरह से परीक्षण और परिदृश्यीकरण किया गया है।

Gomail केवल SMTP सर्वर का उपयोग करके ईमेल भेज सकता है। हालांकि, एपीआई सम्बंधित और स्थानीय पोस्टफिक्स, एपीआई आदि का उपयोग करके ईमेल भेजने के विधानों को आसानी से लागू किया जा सकता है।

इसका संस्करण नियंत्रण के लिए gopkg.in का उपयोग किया जाता है, इसलिए प्रत्येक संस्करण के भीतर कोई असंगत परिवर्तन नहीं होगा।

इसके लिए गो 1.2 या उससे बाद का संस्करण का उपयोग किया जाता है। गो 1.5 में, बाह्य आवश्यकताओं का उपयोग नहीं किया जाएगा।

Gomail की विशेषताएँ

Gomail निम्नलिखित विशेषताओं का समर्थन करता है:

  • संलग्नक
  • इनलाइन छवियाँ
  • HTML और पाठ टेम्पलेट
  • विशेष वर्णों की स्वचालित एनकोडिंग
  • SSL और TLS
  • SMTP कनेक्शन का उपयोग करके एक ही समय में एक से अधिक ईमेल भेजना

स्थापना

go get gopkg.in/gomail.v2

उदाहरण

m := gomail.NewMessage()
m.SetHeader("From", "[email protected]")
m.SetHeader("To", "[email protected]", "[email protected]")
m.SetAddressHeader("Cc", "[email protected]", "Dan")
m.SetHeader("Subject", "Hello!")
m.SetBody("text/html", "Hello <b>Bob</b> and <i>Cora</i>!")
m.Attach("/home/Alex/lolcat.jpg")

d := gomail.NewDialer("smtp.example.com", 587, "user", "123456")

// बॉब, कोरा और डैन को ईमेल भेजें।
if err := d.DialAndSend(m); err != nil {
    panic(err)
}

उदाहरण (डेमन)

जो एक चैनल पर सुनता है और प्राप्त सभी संदेश भेजता है।

ch := make(chan *gomail.Message)

go func() {
    d := gomail.NewDialer("smtp.example.com", 587, "user", "123456")

    var s gomail.SendCloser
    var err error
    open := false
    for {
        select {
        case m, ok := <-ch:
            if !ok {
                return
            }
            if !open {
                if s, err = d.Dial(); err != nil {
                    panic(err)
                }
                open = true
            }
            if err := gomail.Send(s, m); err != nil {
                log.Print(err)
            }
        // 30 सेकंड के भीतर कोई ईमेल भेजा नहीं गया हो तो SMTP सर्वर से कनेक्शन बंद करें।
        case <-time.After(30 * time.Second):
            if open {
                if err := s.Close(); err != nil {
                    panic(err)
                }
                open = false
            }
        }
    }
}()

// अपनी प्रोग्राम में इस चैनल का उपयोग करके ईमेल भेजें।

// ईमेल डेमन को बंद करने के लिए चैनल बंद करें।
close(ch)

उदाहरण (ईमेल सदस्यता)

समूह के प्राप्तकर्ताओं को कस्टमाइज़ किए गए ईमेल सदस्यता प्रभावी रूप से भेजें।

// प्राप्तकर्ताओं की सूची।
var list []struct {
    Name    string
    Address string
}

d := gomail.NewDialer("smtp.example.com", 587, "user", "123456")
s, err := d.Dial()
if err != nil {
    panic(err)
}

m := gomail.NewMessage()
for _, r := range list {
    m.SetHeader("From", "[email protected]")
    m.SetAddressHeader("To", r.Address, r.Name)
    m.SetHeader("Subject", "Newsletter #1")
    m.SetBody("text/html", fmt.Sprintf("Hello %s!", r.Name))

    if err := gomail.Send(s, m); err != nil {
        log.Printf("Could not send email to %q: %v", r.Address, err)
    }
    m.Reset()
}

उदाहरण (कोई प्रमाणीकरण नहीं)

स्थानीय SMTP सर्वर का उपयोग करके ईमेल भेजें।

m := gomail.NewMessage()
m.SetHeader("From", "[email protected]")
m.SetHeader("To", "[email protected]")
m.SetHeader("Subject", "Hello!")
m.SetBody("text/plain", "Hello!")

d := gomail.Dialer{Host: "localhost", Port: 587}
if err := d.DialAndSend(m); err != nil {
    panic(err)
}

उदाहरण (कोई एसएमटीपी नहीं)

API या पोस्टफिक्स का उपयोग करके ईमेल भेजें।

m := gomail.NewMessage()
m.SetHeader("From", "[email protected]")
m.SetHeader("To", "[email protected]")
m.SetHeader("Subject", "Hello!")
m.SetBody("text/plain", "Hello!")

s := gomail.SendFunc(func(from string, to []string, msg io.WriterTo) error {
    // API को कॉल करके अपनी ईमेल भेजने की फ़ंक्शन को बनाएं या पोस्टफिक्स को चलाकर करें।
    fmt.Println("From:", from)
    fmt.Println("To:", to)
    return nil
})

if err := gomail.Send(s, m); err != nil {
    panic(err)
}

पूछे जाने वाले प्रश्न

x509: सर्टिफिकेट द्वारा अज्ञात प्राधिकरण द्वारा स्वाक्षरित

यदि आपको इस त्रुटि का सामना करना पड़ता है, तो इसका मतलब है कि Gomail चलाने वाला क्लाइंट, एसएमटीपी सर्वर द्वारा उपयोग किए जाने वाले सर्टिफिकेट को अमान्य मानता है। एक परवर्तन के रूप में, आप सर्वर के सर्टिफिकेट श्रृंखला और होस्टनाम की मान्यता को अनदेखा करके सर्वर की प्रमाणिकता की पुष्टि को छोड़ सकते हैं SetTLSConfig का उपयोग करके:

package main

import (
	"crypto/tls"
	
	"gopkg.in/gomail.v2"
)

func main() {
	d := gomail.NewDialer("smtp.example.com", 587, "user", "123456")
	d.TLSConfig = &tls.Config{InsecureSkipVerify: true}

    // ईमेल भेजने के लिए d का उपयोग करें।
}

हालांकि, कृपया ध्यान दें कि यह असुरक्षित है और इसका उपयोग उत्पादन वातावरण में नहीं करना चाहिए।