Golang发送邮件库email

Golang发送邮件库email

  • golang本身有一个SMTP协议,但是这个协议配置起来比较的复杂,所以我们使用一下第三方库来实现。

人性化的golang电子邮件库

  • email 包装设计的易于使用,足够的灵活。不会受到限制。是一个非常人性化的golang邮件库

  • email库现在支持以下内容

    • 发件人,收件人,密件抄送和抄送字段
    • “test@example.com”和“test@example.com”格式的电子邮件地址
    • 文本和HTML消息正文
    • 附件
    • 阅读回执

安装使用

go get github.com/jordan-wright/email
  • ⚠️:email这个库的版本 >1需要Go1.5或更高的版本
  • ⚠️:如果您需要与以前的Go版本进行兼容,可以使用gopkg.in/jordan-wright/email.v1中的以前的包

image-20220723092205297

案例

使用QQ发送电子邮件

package main

import (
	"github.com/jordan-wright/email"
	"net/smtp"
)

func main() {
	//实例化返回一个结构体
	e := email.NewEmail()
	//From:谁发来的
	e.From = "Crisp <1633749634@qq.com>"
	//To:发给谁的
	e.To = []string{"397666001@qq.com"}
	//抄送,这个地方抄送的意思是,这个邮件在发送后还可以抄送给谁
	e.Bcc = []string{"1633479634@qq.com"}
	e.Cc = []string{"1633749634@qq.com"}
	//主题,标题
	e.Subject = "测试golang email库"
	//普通文本内容,支持html
	e.Text = []byte("小朋友!!!")
	e.HTML = []byte("<h1>html 小朋友!!!</h1>")
	//send方法:smtp.qq.com:587:QQ email相关的域名端口号 smtp.PlainAuth:第一个参数为空,第二个参数为自己的邮箱,第三个参数为授权码,下面有讲如何获取授权码
	err := e.Send("smtp.qq.com:587", smtp.PlainAuth("", "398848401@qq.com", "授权码", "smtp.qq.com"))
	if err != nil {
		return
	}
}
  • 如何获取验证密码

    image-20220723110624871

    image-20220723110859034

创建结构直接创建电子邮件

package main

import (
	"github.com/jordan-wright/email"
	"net/smtp"
	"net/textproto"
)

func main() {
	e := &email.Email{
		To:      []string{"397638366@qq.com"},
		From:    "Crisp <1633773664@qq.com>",
		Subject: "测试golang email库",
		Text:    []byte("小朋友!!!"),
		HTML:    []byte("<h1>html 小朋友!!!</h1>"),
		Headers: textproto.MIMEHeader{},
	}
	//send方法:smtp.qq.com:587:QQ email相关的域名端口号 smtp.PlainAuth:授权 第三个参数授权码需要注意,上面有讲如何获取授权码
	err := e.Send("smtp.qq.com:587", smtp.PlainAuth("", "2283660938@qq.com", "授权码", "smtp.qq.com"))
	if err != nil {
		return
	}
}

Io.Reader创建电子邮件

o.Reader 实现这个接口的任意类型创建电子邮件 email.NewEmailFromReader

附加文件

e := NewEmail()
e.AttachFile("test.txt")

使用连接池来发送大量邮件

(var ch <-chan *email.Email)
p := email.NewPool(
	"smtp.gmail.com:587",
	4,
	smtp.PlainAuth("", "2286680948@qq.com", "ryqnogv3456dmaceiha", "smtp.qq.com"),
)
for i := 0; i < 4; i++ {
	go func() {
		for e := range ch {
			err := p.Send(e, 10*time.Second)
			if err != nil {
				return 
			}
		}
	}()
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值