golang 使用 gomail 发送邮件
- go
- 2024-08-18
- 254热度
- 0评论
安装gomail
go get gopkg.in/gomail.v2
package main
import (
"crypto/tls"
"fmt"
"gopkg.in/gomail.v2"
)
func main() {
test1()
}
func test1() {
message := `
<p> Hello %s,</p>
<p style="text-indent:2em">测试测试测试测试.</p>
<p style="text-indent:2em">测试11111</p>
`
// QQ 邮箱:
// SMTP 服务器地址:smtp.qq.com(SSL协议端口:465/994 | 非SSL协议端口:25)
// 163 邮箱:
// SMTP 服务器地址:smtp.163.com(端口:25)
host := "xxxxx"
port := 25
userName := "xxxx" // 有些油箱登入名不是邮箱地址
password := "xxxx"
fromemail := "xx@xx.com"
m := gomail.NewMessage()
m.SetHeader("From", fromemail) // 发件人
// m.SetHeader("From", "alias"+"<"+userName+">") // 增加发件人别名
// 多个收件人形式
// mailTo := []string{
// "******@qq.com",
// "******@qq.com",
// }
// m.SetHeader("To", mailTo...)
m.SetHeader("To", "xxxxx@qq.com") // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接
// 多个同上
// m.SetHeader("Cc", "******@qq.com") // 抄送,可以多个
// m.SetHeader("Bcc", "******@qq.com") // 暗送,可以多个
m.SetHeader("Subject", "发送测试11111") // 邮件主题
// text/html 的意思是将文件的 content-type 设置为 text/html 的形式,浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理。
// 可以通过 text/html 处理文本格式进行特殊处理,如换行、缩进、加粗等等
m.SetBody("text/html", fmt.Sprintf(message, "测试"))
// text/plain的意思是将文件设置为纯文本的形式,浏览器在获取到这种文件时并不会对其进行处理
// m.SetBody("text/plain", "纯文本")
// m.Attach("test.sh") // 附件文件,可以是文件,照片,视频等等
// m.Attach("lolcatVideo.mp4") // 视频
// m.Attach("lolcat.jpg") // 照片
d := gomail.NewDialer(
host,
port,
userName,
password,
)
// 关闭SSL协议认证
d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
if err := d.DialAndSend(m); err != nil {
panic(err)
}
}
package main
import (
"gopkg.in/gomail.v2"
"strconv"
)
func SendMail(mailTo []string,subject string, body string ) error {
//定义邮箱服务器连接信息,如果是阿里邮箱 pass填密码,qq邮箱填授权码
mailConn := map[string]string {
"user": "zhangqiang@xxxx.com",
"pass": "xxxx",
"host": "smtp.mxhichina.com",
"port": "465",
}
port, _ := strconv.Atoi(mailConn["port"]) //转换端口类型为int
m := gomail.NewMessage()
m.SetHeader("From","XD Game" + "<" + mailConn["user"] + ">") //这种方式可以添加别名,即“XD Game”, 也可以直接用<code>m.SetHeader("From",mailConn["user"])</code> 读者可以自行实验下效果
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 {
"zhangqiang@xxx.com",
"abc@qq.com",
"sssdd@qq.com",
}
//邮件主题为"Hello"
subject := "Hello"
// 邮件正文
body := "Good"
SendMail(mailTo, subject, body)
}