Golang使用gomail发送邮件

Golang使用gomail发送邮件

1.确定发件方,是qq邮箱,还是163网易邮箱,或其他邮箱,不同服务器,不同端口配置
2.发件方要开启 POP3/SMTP 服务

1. 学习链接

学习链接 – 主看不同邮箱对应配置 – Golang发送邮件 — gomail

QQ 邮箱:
SMTP 服务器地址:smtp.qq.com(SSL协议端口:465/587, 非SSL协议端口:25)

163 邮箱:
SMTP 服务器地址:smtp.163.com(SSL协议端口:465/994,非SSL协议端口:25)

2. 开发步骤

① 导包,Terminal 内输入

go get gopkg.in/gomail.v

【
	如果依赖没有加载完整,执行下列语句
	go mod tidy
】

② config.yaml文件夹添加发件信息配置

# 邮件账号配置
# host与port是qq邮箱对应的
goemail:
  host: "smtp.qq.com"
  port: "587"
  username: "1****7@qq.com"
  password: "lmy******gh"

③ 添加工具类 goemail.go,我放在 utility / utils / goemail.go

package utils

import (
	"context"
	"github.com/gogf/gf/v2/frame/g"
	"gopkg.in/gomail.v2"
	"strconv"
)

var UGoemail = uGoemail{}

type uGoemail struct {}

/**
 to 主送 机构联系邮箱
 cc 抄送  创建人邮箱
 subject 标题
 content 内容
 result 1成功 2失败

 host 邮件服务器
 port 端口号
 username 邮箱
 password 授权码
*/

func (e *uGoemail) SendMail(ctx context.Context,to, cc, subject, content string) (result int, err error) {

	// Atoi相当于ParseInt(s,10,0),转换为int类型
	host := g.Cfg().MustGet(ctx,"goemail.host").String()
	port, err := strconv.Atoi(g.Cfg().MustGet(ctx,"goemail.port").String())
	username := g.Cfg().MustGet(ctx,"goemail.username").String()
	password := g.Cfg().MustGet(ctx,"goemail.password").String()

	//发送邮件
	m := gomail.NewMessage()

	m.SetHeader("From", username) //发送邮箱

	m.SetHeader("To", to) //主送
	//m.SetHeader("To", "**1@163.com", "**2@qq.com")  //发送多个人,逗号分隔

	if cc != "" {
		m.SetHeader("Cc", cc) //抄送
	}

	m.SetHeader("Subject", subject) //标题

	m.SetBody("text/html", content) // 发送html格式邮件,发送的内容

	d := gomail.NewDialer(host, port, username, password)

	if err = d.DialAndSend(m); err != nil {
		g.Log().Print(ctx,err)
		return 2 , err
	}
	return 1 , nil
}


④ 需要的地方调用

//将账号密码发送到注册邮件
mail, _ := utils.UGoemail.SendMail(ctx, "15****18@163.com", "", "注册信息", "账号:**** 密码:*** , 不要随意转发他人!")
fmt.Println("发送邮件返回值:" , mail)

⑤ 邮件展示
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值