使用 golang 发送电子邮件的两种方式

目录

    • 使用 golang 发送电子邮件的两种方式
        • 1、使用 golang 官方自带的 net/smtp 包
        • 2、使用第三方库
          • 2.1 安装第三方库
          • 2.2 参考代码
          • html 模板文件参考

使用 golang 发送电子邮件的两种方式

1、使用 golang 官方自带的 net/smtp 包

// 使用go自带的net/smtp包发送邮件
func SendToEmail(fromUser string, toUser string) error{
  // 发件人,password 是验证码,不是密码
	auth := smtp.PlainAuth("login_demo", fromUser, "password", "smtp.qq.com")
	to := []string{toUser}
  // 解析html模板文件
	t, err := template.ParseFiles("email.html")
	if err != nil {
		logging.Errorf("ParseFiles error: %v", err)
		return err
	}
	var body buffer.Buffer

	headers := "MIME-version: 1.0;\nContent-Type: text/html; charset=UTF-8;"
	body.Write([]byte(fmt.Sprintf("Subject: active mail\n%s\n\n", headers)))

  //作为变量传递给html模板
	t.Execute(&body, struct {
		Name  string
		ActiveCode  string
	}{
		Name: "wuyi",
		ActiveCode: "aaa",
	})

	err = smtp.SendMail("smtp.qq.com:25", auth, toUser, to, body.Bytes())
	if err != nil {
		logging.Errorf("send mail error: %v", err)
		return err
	}
	return nil
}

2、使用第三方库

2.1 安装第三方库
go get -v github.com/jordan-wright/email
2.2 参考代码
// 使用第三方库发送邮件
func SendEmail(fromUser string, toUser string) error {
	e:= email.NewEmail()

	e.From = fromUser
	e.To = []string {toUser}
	e.Subject = "active mail"

	t, err := template.ParseFiles("email.html")
	if err != nil {
		logging.Errorf("ParseFiles error: %v", err)
		return err
	}

	body := new(bytes.Buffer)

  //作为变量传递给html模板
	t.Execute(body, struct {
		Name  string
		ActiveCode  string
	}{
		Name: "wuyi",
		ActiveCode: "aaa",
	})

	// html形式的消息
	e.HTML = body.Bytes()
	// 从缓冲中将内容作为附件到邮件中
	//e.Attach(body, "email.html", "text/html")
	// 以路径将文件作为附件添加到邮件中
	//e.AttachFile("$GOPATH/src/email/main.go")
	// 发送邮件(如果使用QQ邮箱发送邮件的话,password不是邮箱密码而是授权码)
	return e.Send("smtp.qq.com:587", smtp.PlainAuth("", "[email protected]", "password", "smtp.qq.com"))
}
html 模板文件参考

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户激活邮件title>
head>
<body>
    <h1>亲爱的{{.Name}}:h1>
    <a href="10.100.130.10:10010/confirm?active={{.ActiveCode}}">请点击这里激活账户, 如果点不开,请复制下面的链接到浏览器中打开 a>
    br>
    10.100.130.10:10010/confirm?active={{.ActiveCode}}
body>
html>

你可能感兴趣的:(golang)