当前位置: 首页 > news >正文

beego发邮件服务--邮箱

将用户的信息,存储到数据库中以后,接下来可以给用户发送一封邮件,并且告诉用户只有去邮箱中激活以后,才能进行登录。

给用户发送邮件一个很重要的好处就是,可以判断用户在注册时输入的邮箱是否正确。

只有正确地用户邮箱,才有意义,例如:当我们的网站上架一款新产品时,可以给注册的用户发送邮件,通知其新上架的产品信息。

SMTP服务器就是邮件代收发服务器,由邮件服务商提供,常见的SMTP服务器端口号:
QQ邮箱:SMTP服务器地址:smtp.qq.com(端口:587)
雅虎邮箱: SMTP服务器地址:smtp.yahoo.com(端口:587)
163邮箱:SMTP服务器地址:smtp.163.com(端口:25)
126邮箱: SMTP服务器地址:smtp.126.com(端口:25)
新浪邮箱: SMTP服务器地址:smtp.sina.com(端口:25)

第一:指定发送邮件的配置信息。

config := `{"username":"563364657@qq.com","password":"kufzjehabgesbceb","host":"smtp.qq.com","port":587}`

这里指定了发件人的邮箱名称,对应的发送密码,对应SMTP服务器,以及对应的端口号。

这里我们使用的是QQ的邮箱,所以SMTP服务器指的是QQ的SMTP服务器地址,如果发件人使用的是163的邮箱,这里需要指定的163的SMTP服务器地址:smtp.163.com

第二:根据配置信息,创建一个EMAIL的对象

temail:=utils.NewEMail(config)

第三:通过EMAIL对象中的属性。指定,发件人邮箱,收件人邮箱,邮件标题,以及邮件的内容。

temail.To = []string{user.Email}//指定收件人邮箱地址,就是用户在注册时填写的邮箱地址
temail.From = "563364657@qq.com"//指定发件人的邮箱地址,这里我们使用的QQ邮箱。
temail.Subject = "用户激活"//指定邮件的标题
//指定邮件的内容。该内容发送到用户的邮箱中以后,该用户打开邮箱,可以将该URL地址复制到地址栏中,敲回车键,就会向该指定的URL地址发送请求,我们在该地址对应的方法中,接收该用户的ID,然后根据该Id,查询出用户的信息后,将其对应的一个属性,Active设置为true,表明用户已经激活了,那么用户就可以登录了。
temail.HTML = "复制该连接到浏览器中激活:127.0.0.1:8088/active?id="+strconv.Itoa(user.Id)

第四:发送邮件

调用EMAIL对象中的send方法发送邮件,如果邮件发送失败,给用户相应的提示并且重新返回到注册页面,让用户填写相应的信息,如果邮件发送成功,也要给出相应的提示。

err = temail.Send()
if err != nil{
   this.Data["errmsg"] = "发送激活邮件失败,请重新注册!"
   this.TplName = "register.html"
   return
}

this.Ctx.WriteString("注册成功,请前往邮箱激活!")

发送成功后邮箱显示图下

相关文章:

  • beego框架使用session后报错runtime error: invalid memory address or nil pointer dereference
  • golang从结构体中解析出json
  • protobuf简单介绍
  • golang中md5加密算法
  • package golang.org/x/crypto/ssh/terminal: unrecognized import path golang.org/x/crypto/ssh/terminal
  • CentOS6设置静态IP可上网
  • 通过码云来管理代码
  • SparkStreaming中reduceByKeyAndWindow算子的使用
  • 区块链:讲故事告诉你比特币的原理及运作机制
  • Spark的WordCount产生多少个RDD
  • 椭圆曲线加密算法详解
  • 以太坊solidity简介
  • fastdfs中golang的api上传文件
  • linux下统计目录下文件个数命令
  • PKCS的 15 个标准
  • 230. Kth Smallest Element in a BST
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Apache Spark Streaming 使用实例
  • classpath对获取配置文件的影响
  • js数组之filter
  • js中forEach回调同异步问题
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spring-boot 启动时碰到的错误
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Twitter赢在开放,三年创造奇迹
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 从零开始的无人驾驶 1
  • 解析带emoji和链接的聊天系统消息
  • 聊聊flink的TableFactory
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 小程序01:wepy框架整合iview webapp UI
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 赢得Docker挑战最佳实践
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​​​​​​​​​​​​​​Γ函数
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (九)One-Wire总线-DS18B20
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十一)c52学习之旅-动态数码管
  • (一)Linux+Windows下安装ffmpeg
  • (转)mysql使用Navicat 导出和导入数据库
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net framework profiles /.net framework 配置
  • .net操作Excel出错解决
  • .net访问oracle数据库性能问题