(10)go-micro微服务发送邮件

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: (10)go-micro微服务发送邮件

一 获取QQ邮箱Pass

  • 1.登录QQ邮箱
  • 2.点击设置,点击账户,下拉找到POP3/SMTP,点击生成授权码


62.png


  • 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微服务项目搭建工作就正式完成。
  • 接下来就开始正式的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。
相关文章
|
1月前
|
Go API Docker
热门go与微服务15
热门go与微服务15
31 2
|
2月前
|
监控 Go 微服务
带你十天轻松搞定 Go 微服务系列全集+勘误
带你十天轻松搞定 Go 微服务系列全集+勘误
|
2月前
|
消息中间件 人工智能 供应链
go-zero 微服务实战系列(二、服务拆分)
go-zero 微服务实战系列(二、服务拆分)
|
1天前
|
Cloud Native Go API
Go语言在微服务架构中的创新应用与实践
本文深入探讨了Go语言在构建高效、可扩展的微服务架构中的应用。Go语言以其轻量级协程(goroutine)和强大的并发处理能力,成为微服务开发的首选语言之一。通过实际案例分析,本文展示了如何利用Go语言的特性优化微服务的设计与实现,提高系统的响应速度和稳定性。文章还讨论了Go语言在微服务生态中的角色,以及面临的挑战和未来发展趋势。
|
2天前
|
运维 Go 开发者
Go语言在微服务架构中的应用与优势
本文深入探讨了Go语言在构建微服务架构中的独特优势和实际应用。通过分析Go语言的核心特性,如简洁的语法、高效的并发处理能力以及强大的标准库支持,我们揭示了为何Go成为开发高性能微服务的首选语言。文章还详细介绍了Go语言在微服务架构中的几个关键应用场景,包括服务间通信、容器化部署和自动化运维等,旨在为读者提供实用的技术指导和启发。
|
6天前
|
负载均衡 Go API
探索Go语言在微服务架构中的应用与优势
在这篇技术性文章中,我们将深入探讨Go语言(又称为Golang)在构建微服务架构时的独特优势。文章将通过对比分析Go语言与其他主流编程语言,展示Go在并发处理、性能优化、以及开发效率上的优势。同时,我们将通过一个实际的微服务案例,详细说明如何利用Go语言构建高效、可扩展的微服务系统。
|
10天前
|
安全 Go 云计算
探索Go语言在微服务架构中的应用与优势
在本文中,我们将深入探讨Go语言(又称为Golang)在构建微服务架构中的独特优势。文章将分析Go语言的并发模型、简洁的语法以及高效的编译速度,以及这些特性如何使其成为微服务架构的理想选择。我们将通过一个简单的微服务示例,展示Go语言在实际开发中的表现,并讨论其在性能和可维护性方面的优势。
|
7天前
|
消息中间件 监控 Go
Go语言在微服务架构中的优势与实践
【10月更文挑战第10天】Go语言在微服务架构中的优势与实践
|
7天前
|
Java Go 数据库
Go语言在微服务架构中的优势与实践
【10月更文挑战第10天】Go语言在微服务架构中的优势与实践
|
1月前
|
缓存 安全 Java
如何利用Go语言提升微服务架构的性能
在当今的软件开发中,微服务架构逐渐成为主流选择,它通过将应用程序拆分为多个小服务来提升灵活性和可维护性。然而,如何确保这些微服务高效且稳定地运行是一个关键问题。Go语言,以其高效的并发处理能力和简洁的语法,成为解决这一问题的理想工具。本文将探讨如何通过Go语言优化微服务架构的性能,包括高效的并发编程、内存管理技巧以及如何利用Go生态系统中的工具来提升服务的响应速度和资源利用率。