实现邮箱注册需要发送电子邮件,使用spring发送电子邮件会使用到两个类,JavaMailSenderImpl这个类用来发送电子邮件,org.springframework.mail.SimpleMailMessage这个类用来封装邮件信息
还需要javamail的jar包。所以首先需要添加依赖

<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version>
</dependency>

还需要配置以上两个类
applicationContext-mail.xml

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host" value="smtp.aliyun.com"></property><property name="port" value="465"></property><property name="username" value="setnull@aliyun.com"></property><property name="password" value="lxm123456"></property><!--<property name="protocol" value="smtp"></property>--><property name="defaultEncoding" value="UTF-8"></property><property name="javaMailProperties"><props><!-- 设置SMTP服务器需要用户验证 --><prop key="mail.smtp.auth">true</prop><prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>  <prop key="mail.smtp.socketFactory.port">465</prop>  </props></property></bean><bean id="activationMailMessage"  class="org.springframework.mail.SimpleMailMessage" scope="prototype"><property name="from" value="setnull@aliyun.com"></property><property name="subject" value="【i旅行】请激活您的账户"></property><!--<property name="text" value=""></property>--></bean>

接下来编码实现邮箱注册

  1. MailService.java中添加发送邮件接口
public void sendActivationMail(String mailTo,String activationCode);
  1. MailServiceImpl.java中实现发送邮件
@Resource
private MailSender mailSender;
@Resource
private SimpleMailMessage mailMessage;public void sendActivationMail(String mailTo, String activationCode) {mailMessage.setTo(mailTo);mailMessage.setText("您的注册邮箱:"+mailTo+"激活码:"+activationCode);mailSender.send(mailMessage);}
  1. UserService.java添加邮箱注册用户接口
/*** 使用邮箱注册用户* @param user* @throws Exception     ** */public void itriptxCreateUser(ItripUser user) throws Exception;
  1. 实现使用邮箱注册用户
    UserServiceImpl.java
public void itriptxCreateUser(ItripUser user) throws Exception {//生成激活码String activationCode = MD5.getMd5(new Date().toLocaleString(),32);//发送邮件mailService.sendActivationMail(user.getUserCode(),activationCode);//保存激活码到RedisredisAPI.set("activition:"+user.getUserCode(),30*60,activationCode);//保存用户信息itripUserMapper.insertItripUser(user);}
  1. UserController.java
 @RequestMapping(value="/doregister",method=RequestMethod.POST,produces = "application/json")public @ResponseBody Dto doRegister(@RequestBody ItripUserVO userVO) {if(!validEmail(userVO.getUserCode()))return  DtoUtil.returnFail("请使用正确的邮箱地址注册",ErrorCode.AUTH_ILLEGAL_USERCODE);try {ItripUser user=new ItripUser();user.setUserCode(userVO.getUserCode());user.setUserPassword(userVO.getUserPassword());user.setUserType(0);user.setUserName(userVO.getUserName());if (null == userService.findByUsername(user.getUserCode())) {user.setUserPassword(MD5.getMd5(user.getUserPassword(), 32));userService.itriptxCreateUser(user);return DtoUtil.returnSuccess();}else{return DtoUtil.returnFail("用户已存在,注册失败", ErrorCode.AUTH_USER_ALREADY_EXISTS);}} catch (Exception e) {e.printStackTrace();return DtoUtil.returnFail(e.getMessage(), ErrorCode.AUTH_UNKNOWN);}}/**            ** 合法E-mail地址:* 1. 必须包含一个并且只有一个符号“@”* 2. 第一个字符不得是“@”或者“.”* 3. 不允许出现“@.”或者.@* 4. 结尾不得是字符“@”或者“.”* 5. 允许“@”前的字符中出现“+”* 6. 不允许“+”在最前面,或者“+@”*/private boolean validEmail(String email){String regex="^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$"  ;return Pattern.compile(regex).matcher(email).find();}

下面需要使用激活码激活用户

  1. 修改UserService.java
 /*** 邮箱激活* @param email 用户注册油箱* @param code 激活码* @return* @throws Exception*/public boolean activate(String email,String code) throws Exception;
  1. UserServiceImpl.java
@Overridepublic boolean activate(String email, String code) throws Exception {//比对激活码if(redisAPI.exist("activition:"+email)){if(redisAPI.get("activition:"+email).equals(code)){ItripUser user = this.findByUsername(email);if(EmptyUtils.isNotEmpty(user)){//更新用户user.setFlatID(user.getId());user.setActivated(1); //平台ID(根据不同登录用户,进行相应存入:自注册用户主键ID、微信ID、QQID、微博ID)user.setUserType(0);//用户类型(标识:0 自注册用户 1 微信登录 2 QQ登录 3 微博登录)itripUserMapper.updateItripUser(user);return true;}}}return false;}
  1. UserController.java
@RequestMapping(value="/activate",method=RequestMethod.PUT,produces= "application/json")public @ResponseBody Dto activate(@RequestParam String user,@RequestParam String code){try {if(userService.activate(user, code)){return DtoUtil.returnSuccess("激活成功");}else{return DtoUtil.returnSuccess("激活失败");}} catch (Exception e) {e.printStackTrace();return DtoUtil.returnFail("激活失败", ErrorCode.AUTH_ACTIVATE_FAILED);}}

爱旅行项目中实现邮箱注册相关推荐

  1. 爱旅行项目中实现手机注册

    实现手机注册的流程图: 客户端向应用服务器发出手机注册申请,在应用服务器生成短信验证码,通过短信服务商将短信发送到手机,并且回调通知给应用程序. 接入步骤 1)注册开发者账号 注册账号网址:www.y ...

  2. 爱旅行项目中完成微信支付

    1.配置微信支付的部分请求参数 <!-- 微信手机网站支付 --><bean class="cn.itrip.trade.config.WXPayConfig" ...

  3. 爱旅行项目中使用任务调度

    在itrip-biz模块中搭建起SSM环境,将下面素材复制到工程中resources目录下: 2.下面进行注解式任务调度的配置 在springmvc-servlet.xml中添加如下配置: <b ...

  4. 爱旅行项目中实现支付宝支付

    在ssm框架的基础上,按照以下步骤完成支付功能 1.配置文件 applicationContext-alipay.xml <bean class="cn.itrip.trade.con ...

  5. 爱旅行项目中使用solr实现酒店搜索

    准备工作: 在酒店搜索业务中,搜索内容来自于多张表,查询语句比较复杂.素材中会有提供 我们只需要把提供的solr_home覆盖掉练习时的solr_home即可. 接下来即可在itrip-search模 ...

  6. 爱旅行项目-环境搭建

    爱旅行项目-环境搭建 B2C 商家对客户 professional专业的 前后端分离:前端只负责进行数据显示 后端只负责接口的提供 后端通常以一个对象来返回数据 酒店模块: 1.注册 登录 首页查看推 ...

  7. JAVA项目中实现邮箱验证的方法

    本文只是讲一下大致思路,用个人的QQ邮箱举例,对于企业用户照此方法使用企业邮箱. 首先是需要配置一下邮箱,登录上邮箱找到设置-账户 在下面找到 POP3/IMAP/SMTP/Exchange/Card ...

  8. 爱旅行项目-查询酒店位置及酒店特色代码

    在itrip-biz中创建以下接口和类 以下是代码: HotelController.java @Controller @RequestMapping(value = "/api/hotel ...

  9. 爱旅行web多模块项目搭建

    标题 注意这里面是关联的 所以你要删除某个模块 1.移除 2.删除 3.去父级pom.xml移除对应模块 (这个就坑过我) 爱旅行项目搭建过程 1.建父级模块 步骤 2.子模块(4web模块 3非we ...

最新文章

  1. 阿里巴巴加大IT人才引进 只为捍卫云计算市场地位
  2. scikit-image安装 from numpy.lib.arraypad import _validate_lengths ImportError: cannot import name ‘_va
  3. 封装的适配器 adapter
  4. IDE日志分析方法pt。 2
  5. 类的初始化和实例的初始化
  6. 【我的物联网成长记2】设备如何进行选型?
  7. APPCAN学习笔记006_创建第一个APPCAN应用
  8. 数据结构上机实践第四周项目3 - 单链表应用
  9. c++反转字符,算法优化与实现
  10. nmake命令行编译Qt项目
  11. Diamond types are not supported at language level ‘5‘ 解决方法
  12. 谷歌生物医学专用翻译_【小虎聊干货】八大翻译软件大揭秘,告诉你科研翻译的正确打开方式...
  13. mybatis-plus常用使用方法(一)
  14. Unity环境光 Environment面板
  15. 普洛斯与宁德时代签署战略合作协议;高博昌平国际研究型医院成为北京自贸区首批签约项目 | 美通企业日报...
  16. 我在华为的十年(转)
  17. access的否定形式_雅思考试对于新手有多难?
  18. 2015年11月小结
  19. RFID射频卡、IC卡、ID卡在称重系统中有什么作用
  20. kaggle 共享单车项目数据分析和单车租赁数预测

热门文章

  1. 决策过程并举例_任何有品牌意识的老板,都应该会用4P理论做决策!
  2. android 动态壁纸设计
  3. java项目添加功能失败_学生信息的添加 Java web简单项目初试(失败)
  4. google authenticator 工作原理
  5. 低功耗蓝牙(BLE)你入门了吗
  6. Ubuntu 11.04 (Natty Narwhal)图形安装教程、基本设置、网络设置、软件源、开启Unity、ubuntu文档
  7. 复旦大学演讲刷屏:我用尽了毕生的力气,只是抵达了生活的平凡
  8. java编程macbook pro_macbook pro 能装C++ JAVA JAVA eclipse这些编程软件吗?
  9. SILKYPIX Developer Studio Pro for Mac v11.0.3 专业的RAW图像处理软件
  10. python单元测试简介