个人名片:
博主:酒徒ᝰ.
专栏:瑞吉外卖
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志:如果决意去做一件事了就不要再问自己和别人值不值得。
本项目基于B站黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + mybatis plus开发核心技术的真java实战项目。
视频链接【黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + mybatis
plus开发核心技术的真java实战项目】 /video/BV13a411q753?
点击观看
目录
一、原因二、邮箱一、原因
对于个人来说,几乎是申请不到短信的模板签名。这些模板一般是企业所用。
我们只是练习项目,没有必须花费金钱去申请到签名,最好却只有一两次。
最后,也是最重要的一点。白嫖的才是最香的。
自己添加
因为前端代码修改的话很麻烦,所有就直接将验证码发送发送到邮箱了。
在发送验证码操作中进行添加如下代码。
二、邮箱
邮箱的优点代码实现QQ邮箱向用户提供安全、稳定、快速、便捷电子邮件服务的邮箱产品,已为超过1亿的邮箱用户提供免费和增值邮箱服务。
QQ邮件服务以高速电信骨干网为强大后盾,独有独立的境外邮件出口链路,免受境内外网络瓶颈影响,全球传信。
采用高容错性的内部服务器架构,确保任何故障都不影响用户的使用,随时随地稳定登录邮箱,收发邮件通畅无阻。
在生成验证码,紧接着执行以下代码,将验证码发送到你的邮箱。需要有两个邮箱才可以哦!
一个邮箱发送,一个邮箱接受。
//QQ邮箱发送验证码try {userService.send_email("接收邮箱", "邮件标题");} catch (Exception e) {throw new RuntimeException(e);}
完整代码如下:
/*** 发送验证码* @param user* @param session* @return*/@PostMapping("/sendCode")public R<String> sendCode(@RequestBody User user, HttpSession session){//获取移动端输入手机号String phone = user.getPhone();//手机号不为空,则发送验证码。if (StringUtils.isNotEmpty(phone)){//生成验证码String code = ValidateCodeUtils.generateValidateCode(4).toString();log.info("code:{}", code);//短信发送验证码 就不写了//QQ邮箱发送验证码try {userService.send_email("接收邮箱", "邮件标题");} catch (Exception e) {throw new RuntimeException(e);}//保存验证码 sessionsession.setAttribute(phone, code);return R.success("验证码发送成功");}return R.error("验证码发送失败");}
在IUserService中建立send_email接口
这里为了更好的阅读,就将业务写入了业务层中,其实,每一个地方都应该这么做。
void send_email(String email, String msg) throws Exception;
在实现类中实现方法
package com.itheima.reggie.service.impl;import com.itheima.reggie.entity.User;import com.itheima.reggie.mapper.UserMapper;import com.itheima.reggie.service.IUserService;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.itheima.reggie.utils.Email_Util;import org.springframework.stereotype.Service;import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import java.util.Date;import java.util.Properties;/*** <p>* 用户信息 服务实现类* </p>** @author 酒徒* @since -09-04*/@Servicepublic class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {@Overridepublic void send_email(String email, String msg) throws Exception{String to = email;//发送到哪个邮箱,及目标邮箱String subject = "验证码";//邮件标题String content = msg;//邮件内容Properties properties = new Properties();properties.put("mail.smtp.host", "");properties.put("mail.smtp.port", "25");//邮箱端口号properties.put("mail.smtp.auth", "true");Authenticator authenticator = new Email_Util("发送邮箱", "发送邮箱的授权码,这个网上很容易找到教程的");//你的邮箱,与授权码javax.mail.Session sendMailSession = javax.mail.Session.getDefaultInstance(properties, authenticator);MimeMessage mailMessage = new MimeMessage(sendMailSession);mailMessage.setFrom(new InternetAddress("发送邮箱"));//发送邮件的地址/就填你的qq邮箱// Message.RecipientType.TO属性表示接收者的类型为TOmailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));mailMessage.setSubject(subject, "UTF-8");mailMessage.setSentDate(new Date());// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象Multipart mainPart = new MimeMultipart();// 创建一个包含HTML内容的MimeBodyPartBodyPart html = new MimeBodyPart();html.setContent(content.trim(), "text/html; charset=utf-8");mainPart.addBodyPart(html);mailMessage.setContent(mainPart);Transport.send(mailMessage);}}