[golang]使用gomail发邮件(在Go中发送电子邮件的最佳方式)
2023-09-11 14:18:06 时间
1 前言
定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码(客户端专用密码)。
gomail包:
go get gopkg.in/gomail.v2
更多功能可以参考 https://github.com/go-gomail/gomail
2 代码
/** * @Author: FB * @Description: * @File: main.go * @Version: 1.0.0 * @Date: 2019/9/7 14:01 */ package main import ( "gopkg.in/gomail.v2" "strconv" "log" "fmt" ) func SendMail(mailTo []string, subject string, body string) error { //定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码 //mailConn := map[string]string{ // "user": "xxx@163.com", // "pass": "your password", // "host": "smtp.163.com", // "port": "465", //} mailConn := map[string]string{ "user": "xxx@sample.cn", "pass": "r4r3St*****7a7Uk", "host": "smtp.exmail.qq.com", "port": "465", } port, _ := strconv.Atoi(mailConn["port"]) //转换端口类型为int m := gomail.NewMessage() m.SetHeader("From", m.FormatAddress(mailConn["user"], "XX官方")) //这种方式可以添加别名,即“XX官方” //说明:如果是用网易邮箱账号发送,以下方法别名可以是中文,如果是qq企业邮箱,以下方法用中文别名,会报错,需要用上面此方法转码 //m.SetHeader("From", "FB Sample"+"<"+mailConn["user"]+">") //这种方式可以添加别名,即“FB Sample”, 也可以直接用<code>m.SetHeader("From",mailConn["user"])</code> 读者可以自行实验下效果 //m.SetHeader("From", mailConn["user"]) m.SetHeader("To", mailTo...) //发送给多个用户 m.SetHeader("Subject", subject) //设置邮件主题 m.SetBody("text/html", body) //设置邮件正文 d := gomail.NewDialer(mailConn["host"], port, mailConn["user"], mailConn["pass"]) err := d.DialAndSend(m) return err } func main() { //定义收件人 mailTo := []string{ "abc@sample.com", } //邮件主题为"Hello" subject := "Hello by golang gomail from exmail.qq.com" // 邮件正文 body := "Hello,by gomail sent" err := SendMail(mailTo, subject, body) if err != nil { log.Println(err) fmt.Println("send fail") return } fmt.Println("send successfully") }
3 参考
相关文章
- 兼容go redis cluster的pipeline批量
- 【Go命令教程】6. go doc 与 godoc
- go mod 指定包版本号
- go环境import cycle not allowed问题处理
- go gorm框架一对多查询代码示例
- 解决go项目报错:fatal: could not read Username for ‘https://gitee.com‘: terminal prompts disabled
- Go语言中的注释类型和代码风格
- [Go] go build 减小二进制文件大小的几种方式
- [Go] 注意 go build -o <output> 选项的准确含义
- Atitit golang开发环境搭建 目录 1. 编辑helo.go1 1.1. 调试编译1 2. Ide选择liteide2 3. 问题解决2 4. 附录2 4.1. Go语言标准库常
- [手游项目3]-9-Go语言sync.Map(在并发环境中使用的map)
- Go实战--golang中使用JWT(JSON Web Token)
- 【GO】 K8s 管理系统项目6[API部分--Namespace]
- Go语言自学系列 | golang标准库encoding/json
- Go语言自学系列 | golang接口
- Go语言自学系列 | golang方法接收者类型
- Go语言自学系列 | golang包管理工具go module
- Go语言自学系列 | golang包
- Go语言自学系列 | golang匿名函数
- Go语言自学系列 | golang 函数
- Go语言自学系列 | golang流程控制关键字break
- Go语言自学系列 | golang for range循环
- Go语言缓存LRU库"github.com/hashicorp/golang-lru"
- go语言web开发系列之二十四:用imagemagick为上传图片生成缩略图
- Golang 无法下载依赖解决方案 unrecognized import path "golang.org/x/net
- GO 多态-Golang接口的定义/空接口/断言
- Go语言入门-掌握go语言的变量和数据类型
- go 1.14.7 安装