Go Go-Simple-Mail包进行批量SMTP邮件发送

作者 : admin 本文共3374个字,预计阅读时间需要9分钟 发布时间: 2024-06-3 共2人阅读

go-simple-mail 包提供了一种简便的方式来处理和发送邮件。这个包支持保持活动连接、TLS和SSL加密协议,非常适合批量SMTP邮件发送需求。 

1、安装Go-Simple-Mail包

go get -u github.com/xhit/go-simple-mail/v2

2、配置SMTP服务器连接

go-simple-mail包支持多种SMTP服务器连接的配置,包括TLS和SSL。 

package main

import (
    mail "github.com/xhit/go-simple-mail/v2"
    "log"
    "time"
)

func main() {
    server := mail.NewSMTPClient()
    server.Host = "smtp.example.com"
    server.Port = 587 // 或者465(SSL)
    server.Username = "your-email@example.com"
    server.Password = "your-email-password"
    server.Encryption = mail.EncryptionTLS // 可以用 mail.EncryptionNone, mail.EncryptionSSL, mail.EncryptionTLS

    server.KeepAlive = true
    server.ConnectTimeout = 10 * time.Second
    server.SendTimeout = 10 * time.Second

    smtpClient, err := server.Connect()
    if err != nil {
        log.Fatal(err)
    }

    // 发送邮件的代码可以放在这里
}

建了一个SMTP服务器连接对象,配置了主机、端口、用户名、密码,以及加密方式等参数。通过server.Connect()方法建立连接,并捕获可能的错误。

3、发送单封邮件

在建立了SMTP连接之后,我们可以使用go-simple-mail包发送邮件。

package main

import (
    mail "github.com/xhit/go-simple-mail/v2"
    "log"
    "time"
)

func main() {
    server := mail.NewSMTPClient()
    server.Host = "smtp.example.com"
    server.Port = 587
    server.Username = "your-email@example.com"
    server.Password = "your-email-password"
    server.Encryption = mail.EncryptionTLS

    server.KeepAlive = true
    server.ConnectTimeout = 10 * time.Second
    server.SendTimeout = 10 * time.Second

    smtpClient, err := server.Connect()
    if err != nil {
        log.Fatal(err)
    }

    email := mail.NewMSG()
    email.SetFrom("From Me ").
        AddTo("recipient1@example.com").
        SetSubject("Test Email Subject")

    email.SetBody(mail.TextHTML, "

Hello, this is a test email!

") err = email.Send(smtpClient) if err != nil { log.Fatal(err) } else { log.Println("Email Sent Successfully!") } }

创建了一封邮件,并设置了发件人、收件人、主题和邮件内容。最后调用email.Send(smtpClient)方法发送邮件,并处理潜在的错误。

4、批量发送邮件

使用go-simple-mail包不仅可以发送单封邮件,还可以用来批量发送邮件,这在需要群发邮件时非常有用。

package main

import (
    mail "github.com/xhit/go-simple-mail/v2"
    "log"
    "time"
)

func main() {
    server := mail.NewSMTPClient()
    server.Host = "smtp.example.com"
    server.Port = 587
    server.Username = "your-email@example.com"
    server.Password = "your-email-password"
    server.Encryption = mail.EncryptionTLS

    server.KeepAlive = true
    server.ConnectTimeout = 10 * time.Second
    server.SendTimeout = 10 * time.Second

    smtpClient, err := server.Connect()
    if err != nil {
        log.Fatal(err)
    }

    recipients := []string{"recipient1@example.com", "recipient2@example.com", "recipient3@example.com"}
    subject := "Bulk Email Test"
    body := "

This is a test bulk email

" for _, recipient := range recipients { email := mail.NewMSG() email.SetFrom("From Me "). AddTo(recipient). SetSubject(subject) email.SetBody(mail.TextHTML, body) err = email.Send(smtpClient) if err != nil { log.Printf("Could not send email to %s: %v", recipient, err) } else { log.Printf("Email sent to %s successfully!", recipient) } } }

将收件人放入一个列表,通过循环创建和发送邮件, 同时处理每一次的发送结果。

5、添加附件

除了发送文本邮件,go-simple-mail包还支持添加附件。我们可以通过email.AddAttachment()方法添加文件附件。

package main

import (
    mail "github.com/xhit/go-simple-mail/v2"
    "log"
    "time"
)

func main() {
    server := mail.NewSMTPClient()
    server.Host = "smtp.example.com"
    server.Port = 587
    server.Username = "your-email@example.com"
    server.Password = "your-email-password"
    server.Encryption = mail.EncryptionTLS

    server.KeepAlive = true
    server.ConnectTimeout = 10 * time.Second
    server.SendTimeout = 10 * time.Second

    smtpClient, err := server.Connect()
    if err != nil {
        log.Fatal(err)
    }

    email := mail.NewMSG()
    email.SetFrom("From Me ").
        AddTo("recipient@example.com").
        SetSubject("Email with Attachment")

    email.SetBody(mail.TextHTML, "

This email contains an attachment

") email.AddAttachment("path/to/file.pdf") err = email.Send(smtpClient) if err != nil { log.Fatal(err) } else { log.Println("Email Sent Successfully with Attachment!") } }

使用email.AddAttachment("path/to/file.pdf") 添加了一个PDF文件作为附件。

本站无任何商业行为
个人在线分享 » Go Go-Simple-Mail包进行批量SMTP邮件发送
E-->