Beego下的短信和邮件业务
1.短信业务
这里使用的是阿里云短信业务
func RespFunc(this* UserController,resp map[string]interface{}){
this.Data["json"] = resp
this.ServeJSON()
}
func(this*UserController)HandleSendMsg(){
//接受数据
phone := this.GetString("phone")
resp := make(map[string]interface{})
//返回json格式数据
defer RespFunc(this,resp)
//校验数据
if phone == ""{
beego.Error("获取电话号码失败")
//2.给容器赋值
resp["errno"] = 1
resp["errmsg"] = "获取电话号码错误"
return
}
//检查电话号码格式是否正确
reg,_ :=regexp.Compile(`^1[3-9][0-9]{9}$`)
result := reg.FindString(phone)
if result == ""{
beego.Error("电话号码格式错误")
resp["errno"] = 2
resp["errmsg"] = "电话号码格式错误"
return
}
//初始化客户端 需要accessKey 需要开通申请
client, err := sdk.NewClientWithAccessKey("default", AccessKeyId, AccessKeySecret)
if err != nil {
resp["errno"] = 3
resp["errmsg"] = "阿里云客户端初始化失败"
return
}
//获取6位数随机码
rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
vcode := fmt.Sprintf("%06d", rnd.Int31n(1000000))
//初始化请求对象
request := requests.NewCommonRequest()
request.Method = "POST"//设置请求方法
request.Scheme = "https" // https | http //设置请求协议
request.Domain = "dysmsapi.aliyuncs.com" //域名
request.Version = "2017-05-25" //版本号
request.ApiName = "SendSms" //api名称
request.QueryParams["PhoneNumbers"] = phone //需要发送的电话号码
request.QueryParams["SignName"] = "xxx" //签名名称 需要申请
request.QueryParams["TemplateCode"] = "SMS_xxxxxxxxx" //模板号 需要申请
request.QueryParams["TemplateParam"] = `{"code":`+vcode+`}` //发送短信验证码
response, err := client.ProcessCommonRequest(request) //发送短信
if err != nil {
resp["errno"] = 4
resp["errmsg"] = "发送短信失败"
return
}
var msg MSG
json.Unmarshal(response.GetHttpContentBytes(),&msg) //解析发送结果
if msg.Message != "OK"{
resp["errno"] = 6
resp["errmsg"] = "短信发送失败"
return
}
2.邮件业务
//发送邮件
config := `{"username":"xxxxxxxxxxx@163.com","password":"xxxxxxxx","host":"smtp.163.com","port":25}`
emailreg := utils.NewEMail(config)
emailreg.Subject = "主题名称"
emailreg.From = "xxxxxxxxxxx@163.com"
emailreg.To = []string{email}
userName := this.Ctx.GetCookie("userName")
emailreg.HTML = `<a href="http://192.168.168.183:8080/active?username=` + userName + `">点击激活</a>`
err = emailreg.Send()
if err != nil{
this.Data["errmsg"] = "发送激活邮件失败,请重新注册!"
this.TplName = "register.html"
return
}
this.Ctx.WriteString("注册成功,请前往邮箱激活!")