Go语言库系列之email

导读

你们好我是平也,今天跟你们介绍一款用来发送邮件的Go语言库email,目前星星1.3k,很是好用。git

极速上手

准备工做

初始化项目github

go get github.com/jordan-wright/email复制代码

本示例项目结构golang

.
├── go.mod
├── go.sum
└── main.go复制代码

开启邮箱SMTP服务,以163邮箱为例,须要先登陆到邮箱后台点击开启按钮,在发送完短信以后,会获取到一个受权码,将受权码保存,后面须要用到。shell

file

file

代码示例

首先配置好邮件内容服务器

e := email.NewEmail()
e.From = "平也<pingyeaa@163.com>"
e.To = []string{"602588122@qq.com"}
e.Subject = "发现惊天大秘密!"
e.Text = []byte("平也好帅好有智慧哦~")复制代码
  • From:发件人邮箱,格式为“名称+<邮箱>”,也能够直接写邮箱,默认显示的发件人为@符号前的名称
  • To:收件人邮箱地址
  • Subject:邮件标题
  • Text:邮件正文

调用Send方法发送邮件,第一个参数是你的发件人邮箱的SMTP域名+端口号,第二个参数用于身份认证ide

e.Send("smtp.163.com:25", smtp.PlainAuth("", "pingyeaa@163.com", "<你的密码>", "smtp.163.com"))复制代码

smtp.PlainAuth性能

  • 参数1:一般,identity应该是空字符串,以用做用户名。
  • 参数2:用户名
  • 参数3:密码,若是拿到了受权码,则填写受权码
  • 参数4:服务器地址,163的地址是smtp.163.com,其余平台可自行查看

完整代码以下spa

package main

import (
    "net/smtp"

    "github.com/jordan-wright/email"
)

func main() {
    e := email.NewEmail()
    //e.From = "pingyeaa@163.com"
    e.From = "平也 <pingyeaa@163.com>"
    e.To = []string{"xxxxxx@qq.com"}
    e.Subject = "发现惊天大秘密!"
    e.Text = []byte("平也好帅好有智慧哦~")
    err := e.Send("smtp.163.com:25", smtp.PlainAuth("", "pingyeaa@163.com", "KQHQCZSXQWPDZYRF", "smtp.163.com"))
    if err != nil {
        panic(err)
    }
}复制代码

拓展

CC与BCC

CC全称是Carbon Copy,意为抄送,BCC全称Blind Carbon Copy,意为暗抄送,收件人看不到被暗抄送给了谁。code

e := email.NewEmail()
e.Cc = []string{"xxxxxxx@qq.com"}
e.Bcc = []string{"xxxxxxx@qq.com"}复制代码

另外一种初始化方式

能够实例化的时候直接赋值cdn

e := &email.Email{
  From:    "平也 <pingyeaa@163.com>",
  To:      []string{"xxxxxxx@qq.com"},
  Subject: "发现惊天大秘密!",
  Text:    []byte("平也好帅好有智慧哦~"),
}复制代码

发送附件

发送附件很是简单,直接传入文件名便可

e.AttachFile("attachment.txt")复制代码

也能够调用Attach自行实现附件发送,AttachFile其实就是对Attach的封装

func (e *Email) AttachFile(filename string) (a *Attachment, err error) {
    f, err := os.Open(filename)
    if err != nil {
        return
    }
    defer f.Close()

    ct := mime.TypeByExtension(filepath.Ext(filename))
    basename := filepath.Base(filename)
    return e.Attach(f, basename, ct)
}复制代码

链接池

因为频繁发送邮件会不断的与SMTP服务器创建链接,比较影响性能,因此email提供了链接池的功能

auth := smtp.PlainAuth("", "pingyeaa@163.com", "<你的密码>", "smtp.163.com")
p, _ := email.NewPool("smtp.163.com:25", 4, auth)复制代码

建立成功后,就能够借助链接池来发送邮件

e := email.NewEmail()
e.From = "平也 <pingyeaa@163.com>"
e.To = []string{"xxxxxx@qq.com"}
e.Subject = "发现惊天大秘密!"
e.Text = []byte("平也好帅好有智慧哦~")

p.Send(e, 10*time.Second)复制代码

Go语言库代码示例,欢迎star github.com/pingyeaa/go…


感谢你们的观看,若是以为文章对你有所帮助,欢迎关注公众号「平也」,聚焦Go语言与技术原理。 关注我

相关文章
相关标签/搜索