go 发送邮件

简述

Go 提供了一个 smtp(Simple Mail Transfer Protocol - 简单邮件传输协议)库作为其网络包的一部分,“net/smtp”公开了一些可立即使用的有用功能。

Gomail - 一个比较成熟的第三方包,提供了一个快速、简单的解决方案,可以轻松地发送电子邮件。

SMPT

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。

实例

1.导入gomail

go get “github.com/go-gomail/gomail”

2.demo

package main

import (
	"bytes"
	"fmt"
	"github.com/go-gomail/gomail"
	"html/template"
)

func main() {
	m := gomail.NewMessage()
	//发件人邮箱
	fromEmail := "123456@qq.com"

	//发件人昵称
	fromName := "zhq"
	m.SetAddressHeader("From", fromEmail, fromName) // 发件人
	//收件人邮箱
	toEmail := "67890@163.com"

	m.SetHeader("To", // 收件人
		m.FormatAddress(toEmail, ""),
	)
	m.SetHeader("Subject", "发送邮件测试")            // 主题
	//初始化模板
	emailTemplate := `<div></div>`
	t, err := template.New("mail summary template").Parse(emailTemplate)
	if err != nil {
		fmt.Println(err)
	}
	buffer := new(bytes.Buffer)
	data := &struct{
		Vcode string
	}{
		Vcode:"hello world",
	}
	//动态配置模板
	t.Execute(buffer,data)
	// 正文
	m.SetBody("text/html", buffer.String())
	//发件人邮箱授权码
	fromEmailPassword := "123"
	d := gomail.NewDialer("smtp.qq.com", 465, fromEmail, fromEmailPassword)
	if err := d.DialAndSend(m); err != nil {
		fmt.Println(err)
	}
	fmt.Println("邮件已发送")
}


ps:需要注意的是 d := gomail.NewDialer(“smtp.qq.com”, 465, fromEmail, fromEmailPassword) 中 fromEmailPassword并非邮箱密码,而是授权码

执行代码,如果输出邮件已发送表示邮件发送成功,查看收件人邮箱即可

3.获取授权码,以qq邮箱为例

进入邮箱 -> 设置 -> 账户 -> POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 -> 开启POP3/SMTP服务

常用邮箱

列举一些常用的邮箱,可以用来测试:

QQ 邮箱 POP3 服务器地址:qq.com(端口:995) SMTP 服务器地址:smtp.qq.com(端口:465/587)

163 邮箱: POP3 服务器地址:pop.163.com(端口:110) SMTP 服务器地址:smtp.163.com(端口:25)

126 邮箱: POP3 服务器地址:pop.126.com(端口:110) SMTP 服务器地址:smtp.126.com(端口:25)

参考资料:

https://blog.csdn.net/liang19890820/article/details/53084638

https://blog.csdn.net/wangshubo1989/article/details/70808989

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦