(10)go-micro微服务发送邮件
一 获取QQ邮箱Pass
1.登录QQ邮箱
2.点击设置,点击账户,下拉找到POP3/SMTP,点击生成授权码
3.这样就获取了授权码,要妥善保管。
二 安装gomail
go get gopkg.in/gomail.v2
三 初始化发送邮件
- 在mail目录下的mail.go文件中,输入以下代码:
package mail
import (
"account/common/micro"
"account/config/logger"
"account/config/redis"
"fmt"
"gopkg.in/gomail.v2"
"math/rand"
"time"
)
func InitSendMail(mailTo string, subject string, body string, code string) (string, error) {
// 设置邮箱主体
mailConn := map[string]string{
"user": micro.ConsulInfo.Email.User, //发送人邮箱(邮箱以自己的为准)
"pass": micro.ConsulInfo.Email.Pass, //发送人邮箱的密码,现在可能会需要邮箱 开启授权密码后在pass填写授权码
"host": micro.ConsulInfo.Email.Host, //邮箱服务器(此时用的是qq邮箱)
"rename": micro.ConsulInfo.Email.Rename, //邮箱别名
}
m := gomail.NewMessage(
//发送文本时设置编码,防止乱码。 如果txt文本设置了之后还是乱码,那可以将原txt文本在保存时
//就选择utf-8格式保存
gomail.SetEncoding(gomail.Base64),
)
m.SetHeader("From", m.FormatAddress(mailConn["user"], mailConn["rename"])) // 添加别名
m.SetHeader("To", mailTo) // 发送给用户(可以多个)
m.SetHeader("Subject", subject) // 设置邮件主题
m.SetBody("text/html", body) // 设置邮件正文
/*
创建SMTP客户端,连接到远程的邮件服务器,需要指定服务器地址、端口号、用户名、密码,如果端口号为465的话,
自动开启SSL,这个时候需要指定TLSConfig
*/
d := gomail.NewDialer(mailConn["host"], int(micro.ConsulInfo.Email.Port), mailConn["user"], mailConn["pass"]) // 设置邮件正文
//d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
err := d.DialAndSend(m)
if err != nil {
return "", err
}
return code, nil
}
- 邮箱主体是用consul获取的,可以自己定义。
四 发送注册邮件
- 在mail目录下的mail.go文件中,输入以下代码:
// SendRegisterMail 发送注册邮件
func SendRegisterMail(mailTo string) (string, error) {
rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
code := fmt.Sprintf("%06v", rnd.Int31n(1000000))
subject := "欢迎注册"
body := "欢迎注册,您的邮箱验证码为:" + code + "请复制到注册窗口中完成注册,感谢您的支持。验证码在十分钟内有效"
return InitSendMail(mailTo, subject, body, code)
}
五 发送重置密码邮件
- 在mail目录下的mail.go文件中,输入以下代码:
// SendResetPwdMail 发送重置密码邮件
func SendResetPwdMail(mailTo string) (string, error) {
rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
code := fmt.Sprintf("%06v", rnd.Int31n(1000000))
subject := "重置密码"
body := "欢迎重置密码,您的邮箱验证码为:" + code + "请复制到重置密码窗口中完成重置密码,感谢您的支持。验证码在十分钟内有效"
return InitSendMail(mailTo, subject, body, code)
}
六 最后
至此,go-micro微服务项目搭建工作就正式完成。
接下来就开始正式的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。
欢迎大家加入 夏沫の梦的学习交流群 进行学习交流经验,点击
(10)go-micro微服务发送邮件的更多相关文章
- 最热门的 10 个 Java 微服务框架
1.Spring Boot Java 构建 Spring 应用程序已经有很长一段时间了,Spring Boot 是 Spring 的一个特定版本,它通过对配置细节的处理,使微服务构建更加简便.创建 S ...
- go micro 微服务框架温习
go mod edit -require="github.com/chromedp/chromedp@v0.1.0" @后面加上你需要的版本号.就可以 已经修改go.mod 里的依 ...
- 【10】JMicro微服务-API网关
如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到9小节 1. Api网关基本特性: Api网关作为对外网提供服务的基本入口,地位类似于NGINX, ...
- 10分钟了解微服务、容器和Kubernetes
什么是微服务? 什么是微服务?你应该使用微服务吗?微服务与容器和 Kubernetes 有什么关系?如果这些问题在您的日常生活中不断出现,那么这篇文章适合您. 从根本上说,微服务只是一个运行在服务器或 ...
- 微服务开源生态报告 No.10
「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...
- 《Spring Cloud与Docker微服务架构实战》配套代码
不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...
- Spring Cloud与Docker微服务架构实战 PDF
电子版百度云下载 链接: https://pan.baidu.com/s/115u011CJ8MZzJx_NqutyTQ 提取码: 关注公众号[GitHubCN]回复2019获取 本书的代码 共计70 ...
- 微服务架构实践 - 你只懂docker与spring boot就够了吗?
微服务架构实践 - 你只懂docker与spring boot就够了吗? 作者 浮云发发 已关注 2017.02.27 02:50* 字数 2613 阅读 2583评论 6喜欢 35赞赏 2 微服务并 ...
- 【13】JMicro微服务-ID生成与Redis
如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到12小节 1. 微服务中ID地位 如果说前面小节的功能点是微服务的大脑,那么全局唯一ID则是微服务 ...
- 【12】JMicro微服务-Zookeeper
如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到11小节 1. CuratorFramework支持 JMicro目前基于Zookeeper实现统 ...
随机推荐
- 通过 Github Action 实现定时推送天气预报
偶然间,看到 GitHub Actions 教程:定时发送天气邮件 - 阮一峰的网络日志 这篇文章,没错,这个正好能打发自己的折腾之心,也能通过代码给生活引入一些变化. 还是在这里简单记录一下实现过程 ...
- 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- UBOOT编译--- make xxx_deconfig过程详解(一)
make xxx_deconfig过程详解 1. 前言 2. 概述 3. build变量的定义 4. 目标%config的定义 4.1 依赖 scripts_basic 4.1.1 语句$(if $ ...
- Django系列---开发二
django.contrib.auth Django的用户验证框架,可以快速实现用户信息验证.登录.登出等用户操作 from django.contrib.auth import authentica ...
- Git 分支管理策略汇总
原文链接: Git 分支管理策略 最近,团队新入职了一些小伙伴,在开发过程中,他们问我 Git 分支是如何管理的,以及应该怎么提交代码? 我大概说了一些规则,但仔细想来,好像也并没有形成一个清晰规范的 ...
- K8s 生产最佳实践-限制 NameSpace 资源用量
前言 想象一下这个场景:多个系统运行在同一套 K8s 集群上,有重要系统,也有不太重要的系统.但是某一天,某个不重要的系统突然占用了该 K8s 集群的所有资源,导致该集群上的其他系统的正常运行受到影响 ...
- 读 Clean Code,关于变量命名和可维护代码
原文见 http://mindprod.com/jgloss/unmain.html 如何写出不能维护的代码 如何程序命名 容易输入的名字.比如:Fred,asdf 单字母的变量名.比如:a,b,c, ...
- uniapp 微信小程序 配置分享朋友和朋友圈
uniapp 微信小程序 配置分享朋友和朋友圈 首先在小程序中配置微信分享,和微信朋友圈, onShareAppMessage, onShareTimeline 这两个API 和 onLoad 同级目 ...
- 我的Vue之旅 11 Vuex 实现购物车
Vue CartView.vue script 数组的filter函数需要return显式返回布尔值,该方法得到一个新数组. 使用Vuex store的modules方式,注意读取状态的方式 this ...
- VS2019 iis无法在Web服务器上启动调试。打开的URL的IIS辅助进程当前没有运行
可以检查W3SVC服务与WAS这两个服务是否正在运行. 重启这两个服务就可以正常了