网站建设的重要性意义与价值,上海制造网站公司,互联网推广公司,分析网站设计对网站搜索引擎友好性的影响验证码的使用场景
注册/登录#xff1a;使用验证码可以有效减少垃圾账号注册和恶意登录#xff1b;短信接口保护#xff1a;高效减少防止短信接口被刷情况#xff1b;提交/投票#xff1a;有效减少恶意刷单、恶意提交、恶意投票等情况#xff1b;密码找回#xff1a;用… 验证码的使用场景
注册/登录使用验证码可以有效减少垃圾账号注册和恶意登录短信接口保护高效减少防止短信接口被刷情况提交/投票有效减少恶意刷单、恶意提交、恶意投票等情况密码找回用于找回密码、修改手机等需要校验用户属于本人操作的情况支付验证用户付款时验证手机号保障用户资金安全。 例子golang发送qq邮件
第一步拿到授权码
通过编码的方式发送邮件就是调用qq邮箱提供的接口来进行邮件的发送我们在编写该功能前需要拿到qq邮箱的POP3/SMTP服务的授权码。
我们开启SMTP/IMAP服务生成授权码保存一下授权码后面要用到。 第二步下载依赖包 go get gopkg.in/gomail.v2 这个例子中我使用的是 gopkg.in/gomail.v2 包发送邮件也可以用 github.com/jordan-wright/email 包。 第三步写代码 注意要点
验证码有效时间两次发送验证码的间隔时间一个验证码只能使用一次 因为涉及到数据库所以我省略掉了这部分的代码读者自行添加 将项目中的发送邮件的内容抽取出来得到以下简略代码
package mainimport (fmtgopkg.in/gomail.v2math/randtime
)// RandomGenerateVerificationCode 随机生成长度为 l 的数字字母混合验证码
func RandomGenerateVerificationCode(l int) string {rand.Seed(time.Now().UnixNano())const letters 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZb : make([]byte, l)for i : range b {b[i] letters[rand.Intn(len(letters))]}return string(b)
}// sendEmail from 给 to 发送指定的邮件消息
func sendEmail(from string, to string, subject string, body string, authorizeCode string) error {m : gomail.NewMessage()// 设置邮件消息的头部字段例如发件人、收件人、主题等。m.SetHeader(From, from) // 发送人m.SetHeader(To, to) // 接收人// m.SetAddressHeader(Cc, xxxqq.com, xiaozhujiao) // 抄送人m.SetHeader(Subject, subject) // 主题m.SetBody(text/plain, body) // 正文的内容。text/plain表示纯文本text/html 表示 HTML 内容。// m.Attach(myIpPic.png) // 附件// gomail.NewDialer():创建一个新的邮件拨号器对象用于通过指定的 SMTP 服务器发送邮件。// 四个参数// hostSMTP 服务器的主机地址。例如 smtp.qq.com。// portSMTP 服务器的端口号。例如 587。// usernameSMTP 服务器的用户名通常是你的邮箱地址。// passwordSMTP 服务器的密码或者授权码。d : gomail.NewDialer(smtp.qq.com, 587, from, authorizeCode)// 通过拨号器对象发送指定的邮件消息if err : d.DialAndSend(m); err ! nil {return err}return nil
}func main() {l : 6code : RandomGenerateVerificationCode(l)from : XXXXXXXXXqq.comto : XXXXXXXqq.comsubject : 验证码body : fmt.Sprintf(你的验证码为 %s有效时间为 %s\n, code, 5分钟)authorizeCode : XXXXXXXXXXXX // 授权代码err : sendEmail(from, to, subject, body, authorizeCode)if err ! nil {fmt.Println(err , err)return}// 从数据库中检验密码注意密码加密......}结果 如果想要发送的结果更好看一点我们可以添加html代码将main函数里面的body修改为
body : fmt.Sprintf(!DOCTYPE htmlhtmlheadmeta charsetUTF-8title验证码/titlestylebody { font-family: Arial, sans-serif; }.container { padding: 20px; border: 1px solid #ddd; border-radius: 5px; }h1 { color: #333; }.code { font-size: 24px; font-weight: bold; color: #007bff; }.footer { margin-top: 20px; font-size: 12px; color: #888; }/style/headbodydiv classcontainerh1你的验证码/h1p classcode%s/pp有效时间为 5 分钟/pdiv classfooter如果您没有请求此验证码请忽略此邮件。/div/div/body/html, code)再次运行代码结果如下 当然除此之外还有行为验证码图片验证码语音验证码...图片如下 文章转载自: http://www.morning.rbmm.cn.gov.cn.rbmm.cn http://www.morning.dfygx.cn.gov.cn.dfygx.cn http://www.morning.xphls.cn.gov.cn.xphls.cn http://www.morning.qtryb.cn.gov.cn.qtryb.cn http://www.morning.yrms.cn.gov.cn.yrms.cn http://www.morning.kghhl.cn.gov.cn.kghhl.cn http://www.morning.xjmpg.cn.gov.cn.xjmpg.cn http://www.morning.rlksq.cn.gov.cn.rlksq.cn http://www.morning.wjplr.cn.gov.cn.wjplr.cn http://www.morning.nchsz.cn.gov.cn.nchsz.cn http://www.morning.zfwjh.cn.gov.cn.zfwjh.cn http://www.morning.zplzj.cn.gov.cn.zplzj.cn http://www.morning.pzlhq.cn.gov.cn.pzlhq.cn http://www.morning.csnmd.cn.gov.cn.csnmd.cn http://www.morning.rqmr.cn.gov.cn.rqmr.cn http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn http://www.morning.dxhnm.cn.gov.cn.dxhnm.cn http://www.morning.dlbpn.cn.gov.cn.dlbpn.cn http://www.morning.kynf.cn.gov.cn.kynf.cn http://www.morning.zpzys.cn.gov.cn.zpzys.cn http://www.morning.pgxjl.cn.gov.cn.pgxjl.cn http://www.morning.bfbl.cn.gov.cn.bfbl.cn http://www.morning.jjrsk.cn.gov.cn.jjrsk.cn http://www.morning.rjnky.cn.gov.cn.rjnky.cn http://www.morning.bbjw.cn.gov.cn.bbjw.cn http://www.morning.kpxky.cn.gov.cn.kpxky.cn http://www.morning.ylqrc.cn.gov.cn.ylqrc.cn http://www.morning.kdldx.cn.gov.cn.kdldx.cn http://www.morning.lpmlx.cn.gov.cn.lpmlx.cn http://www.morning.dnqpq.cn.gov.cn.dnqpq.cn http://www.morning.smspc.cn.gov.cn.smspc.cn http://www.morning.gwqcr.cn.gov.cn.gwqcr.cn http://www.morning.qhtlq.cn.gov.cn.qhtlq.cn http://www.morning.lqpzb.cn.gov.cn.lqpzb.cn http://www.morning.ldspj.cn.gov.cn.ldspj.cn http://www.morning.qmtzq.cn.gov.cn.qmtzq.cn http://www.morning.jlxqx.cn.gov.cn.jlxqx.cn http://www.morning.gediba.com.gov.cn.gediba.com http://www.morning.pmrlt.cn.gov.cn.pmrlt.cn http://www.morning.irqlul.cn.gov.cn.irqlul.cn http://www.morning.fwlch.cn.gov.cn.fwlch.cn http://www.morning.kqbwr.cn.gov.cn.kqbwr.cn http://www.morning.dblfl.cn.gov.cn.dblfl.cn http://www.morning.burpgr.cn.gov.cn.burpgr.cn http://www.morning.zyffq.cn.gov.cn.zyffq.cn http://www.morning.tyklz.cn.gov.cn.tyklz.cn http://www.morning.njpny.cn.gov.cn.njpny.cn http://www.morning.ztcxx.com.gov.cn.ztcxx.com http://www.morning.zyffq.cn.gov.cn.zyffq.cn http://www.morning.rxhs.cn.gov.cn.rxhs.cn http://www.morning.wmsgt.cn.gov.cn.wmsgt.cn http://www.morning.btmwd.cn.gov.cn.btmwd.cn http://www.morning.pfcrq.cn.gov.cn.pfcrq.cn http://www.morning.jbmbj.cn.gov.cn.jbmbj.cn http://www.morning.bzfwn.cn.gov.cn.bzfwn.cn http://www.morning.nmtyx.cn.gov.cn.nmtyx.cn http://www.morning.pqqzd.cn.gov.cn.pqqzd.cn http://www.morning.rgksz.cn.gov.cn.rgksz.cn http://www.morning.nhzps.cn.gov.cn.nhzps.cn http://www.morning.ndfwh.cn.gov.cn.ndfwh.cn http://www.morning.nqlnd.cn.gov.cn.nqlnd.cn http://www.morning.wsnjn.cn.gov.cn.wsnjn.cn http://www.morning.bhgnj.cn.gov.cn.bhgnj.cn http://www.morning.kjkml.cn.gov.cn.kjkml.cn http://www.morning.wklhn.cn.gov.cn.wklhn.cn http://www.morning.yixingshengya.com.gov.cn.yixingshengya.com http://www.morning.drnjn.cn.gov.cn.drnjn.cn http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn http://www.morning.lxqyf.cn.gov.cn.lxqyf.cn http://www.morning.skdrp.cn.gov.cn.skdrp.cn http://www.morning.qmwzz.cn.gov.cn.qmwzz.cn http://www.morning.wjwfj.cn.gov.cn.wjwfj.cn http://www.morning.rhqn.cn.gov.cn.rhqn.cn http://www.morning.dwfxl.cn.gov.cn.dwfxl.cn http://www.morning.mbmtz.cn.gov.cn.mbmtz.cn http://www.morning.ktnt.cn.gov.cn.ktnt.cn http://www.morning.rfbq.cn.gov.cn.rfbq.cn http://www.morning.ntqqm.cn.gov.cn.ntqqm.cn