一 获取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微服务发送邮件的更多相关文章

  1. 最热门的 10 个 Java 微服务框架

    1.Spring Boot Java 构建 Spring 应用程序已经有很长一段时间了,Spring Boot 是 Spring 的一个特定版本,它通过对配置细节的处理,使微服务构建更加简便.创建 S ...

  2. go micro 微服务框架温习

    go mod edit -require="github.com/chromedp/chromedp@v0.1.0" @后面加上你需要的版本号.就可以 已经修改go.mod 里的依 ...

  3. 【10】JMicro微服务-API网关

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到9小节 1. Api网关基本特性: Api网关作为对外网提供服务的基本入口,地位类似于NGINX, ...

  4. 10分钟了解微服务、容器和Kubernetes

    什么是微服务? 什么是微服务?你应该使用微服务吗?微服务与容器和 Kubernetes 有什么关系?如果这些问题在您的日常生活中不断出现,那么这篇文章适合您. 从根本上说,微服务只是一个运行在服务器或 ...

  5. 微服务开源生态报告 No.10

    「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...

  6. 《Spring Cloud与Docker微服务架构实战》配套代码

    不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...

  7. Spring Cloud与Docker微服务架构实战 PDF

    电子版百度云下载 链接: https://pan.baidu.com/s/115u011CJ8MZzJx_NqutyTQ 提取码: 关注公众号[GitHubCN]回复2019获取 本书的代码 共计70 ...

  8. 微服务架构实践 - 你只懂docker与spring boot就够了吗?

    微服务架构实践 - 你只懂docker与spring boot就够了吗? 作者 浮云发发 已关注 2017.02.27 02:50* 字数 2613 阅读 2583评论 6喜欢 35赞赏 2 微服务并 ...

  9. 【13】JMicro微服务-ID生成与Redis

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到12小节 1. 微服务中ID地位 如果说前面小节的功能点是微服务的大脑,那么全局唯一ID则是微服务 ...

  10. 【12】JMicro微服务-Zookeeper

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到11小节 1. CuratorFramework支持 JMicro目前基于Zookeeper实现统 ...

随机推荐

  1. 齐博x1服务器性能太差,调整系统升级每次校验的文件数

    系统升级需要校验本地的文件是否被修改过,系统默认每次检验1千个文件,一般来说需要分四到五页来处理,如下图所示. 如果你的服务器性能太差的话,就需要手工把数值调小.把下面的代码复制出来.进入后台数据库管 ...

  2. 各大厂 C/C++ 编程规范详解

    来吧!各大厂知名规范体系~ 各有特点各有侧重~ Google C++ Style Guide Google C++ Style Guide,[中文版],简称 GSG,谷歌的 C++ 编程规范,在国内有 ...

  3. Spring知识框架

  4. DQL语句排序与分组

    DQL语句排序与分组 一.DQL-排序 排序是计算机内经常进行的一种操作,其目的是将一组"无序"的记录序列调整为"有序"的记录序列.分内部排序和外部排序,若整个 ...

  5. 怎么实现无痛刷新token

    最近遇到这个需求,前端登录后,后端返回  access_token 和 refresh_token ,当token 过期时用旧的 refresh_token 去获取新的token,前端要不痛去刷新to ...

  6. 畅联新接入物联设备的情况:丰宝 智慧消防领域的 NB水压一体机、智能消防栓、NB液位一体机

    我看了一下,似乎三种完全不同的协议额...应该是电信AEP平台,由双美接入. ------------------------------------------------------------- ...

  7. fastposter v2.10.0 简单易用的海报生成器

    fastposter海报生成器是一款快速开发海报的工具.只需上传一张背景图,在对应的位置放上组件(文字.图片.二维.头像)即可生成海报. 点击代码直接生成各种语言的调用代码,方便快速开发. 现已服务众 ...

  8. CSP-J2022 题解报告

    \(CSP-J2022\) 题解报告 \(T1\) 乘方: 发现 \(2^{32}>10^9\),所以这个题只需要特判 \(a=1\) 的情况为 \(1\),其他直接枚举再判断即可. Code: ...

  9. .NET复习总纲

    以下是自己学习遇到比较好的课程和学习网站,如果大家有更好的课程推荐,可以打在评论区或者私聊我,让我也进行学习和补充进文档 一..NET基础 官方文档:https://learn.microsoft.c ...

  10. 【Devexpress】Gridcontrol列标题换行

    gridView1.OptionsView.AllowHtmlDrawHeaders = true; gridView1.ColumnPanelRowHeight = 35; GridColumn g ...