S2SH邮件注册激活后注册成功
首先我的思路是这样的:①接收从客户端接收过来的数据(密码,用户名,邮箱)
②将密码进行MD5加密,然后将信息用"_"连接起来(用于后面分解)
③将信息交个一个工具类中实现生成邮件信息和发送邮件(Action类提供的信息是加密后的密码和用户名和邮箱组成的一个长字符串)
④在之前说过的那个实现生成邮件信息和发送邮件的工具类用到了另外一个工具类(这里说明一下我们的激活连接是由"http://"+"ip地址"+":/端 口"+"/Action"+"后面的信息"组成的),所以我们这里还缺一个获取真实的IP地址,后面有帖代码
⑤点击在Action类里面经过一些验证就成功注册写入数据库(里面的一些细节就不用说的)
先上代码,这是我的一个测试类Action,.......好吧这不重要,
package com.MailActive;
import com.CommonUtils.CommomUtils;
import com.InterceptorPrivilege.Employee;
import com.InterceptorPrivilege.EmployeeService;
import com.Utils.commonUtils.Base64DE;
import com.Utils.commonUtils.JavaMailActive;
import com.opensymphony.xwork2.ModelDriven;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Controller;
import sun.misc.BASE64Decoder;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
/**
* Created by etund on 2014/10/29.
*/
@Controller
@Scope("prototype")
public class RegisterAction implements ModelDriven<Employee>{
@Autowired
private EmployeeService employeeService;
private Employee model;
private String register;
public String getRegister() {
return register;
}
public void setRegister(String register) {
this.register = register;
}
@Autowired
private JavaMailActive javaMailActive;
public String createMail() throws Exception{
// 接收并封装数据
// String user49f290d6e8459c53f31f97de37921086 = model.getPassword()+"_"+model.getUsername();
String password = model.getPassword();
String username = model.getUsername();
String email = model.getEmail();
// BASE64加密
password = DigestUtils.md5Hex(password);
register = password+"_"+username+"_"+email;
System.out.println(register+"===========register=============");
// 最后用一个字符串验证是否是当初注册的那个用户
// 把加密后的信息加入邮件
javaMailActive.MailActive(register, email);
// 发送邮件
return "createMail";
}
public String confirmMail(){
String[] info = new String[3];
info = register.split("_");
model.setPassword(info[0]);
model.setUsername(info[1]);
model.setEmail(info[2]);
employeeService.save(model);
System.out.println(model.toString());
return "confirmMail";
}
@Override
public Employee getModel() {
if(model==null){
model = new Employee();
}
return model;
}
}
//接下来的介绍两个工具类
//这是实现封装邮件信息和创建邮件的类
package com.Utils.commonUtils;
import com.CommonUtils.CommomUtils;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailMessage;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
/**
* Created by etund on 2014/10/29.
*/
@Component
public class JavaMailActive {
@Autowired
private JavaMailSenderImpl mailSender;
public void MailActive(String register, String email) {
try {
System.out.println(mailSender);
System.out.println(mailSender.getUsername());
// href 有IP地址+:8887+动作
String ip = CommomUtils.getRealIp();
//建立邮件消息,发送简单邮件和html邮件的区别
MimeMessage mailMessage = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);
messageHelper.setFrom(mailSender.getUsername());
messageHelper.setTo(email);
messageHelper.setSubject("点击下面信息激活你的账号");
// ?register="+register
String href = "http://"+ip+":8887"+"/mailActive_confirmMail.do?register="+register;
System.out.println(href + "---------");
messageHelper.setText("<html><body><a href = " + href + ">点击下面链接激活" + href + "</a></body></html>", true);
Properties properties = new Properties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.timeout", "25000");
mailSender.send(mailMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
//这是得到IP地址的类
public static String getRealIp() {
try {
String localip = null;// 本地IP,如果没有配置外网IP则返回它
String netip = null;// 外网IP
Enumeration<NetworkInterface> netInterfaces =
NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
boolean finded = false;// 是否找到外网IP
while (netInterfaces.hasMoreElements() && !finded) {
NetworkInterface ni = netInterfaces.nextElement();
Enumeration<InetAddress> address = ni.getInetAddresses();
while (address.hasMoreElements()) {
ip = address.nextElement();
if (!ip.isSiteLocalAddress()
&& !ip.isLoopbackAddress()
&& ip.getHostAddress().indexOf(":") == -1) {// 外网IP
netip = ip.getHostAddress();
finded = true;
break;
} else if (ip.isSiteLocalAddress()
&& !ip.isLoopbackAddress()
&& ip.getHostAddress().indexOf(":") == -1) {// 内网IP
localip = ip.getHostAddress();
}
}
}
if (netip != null && !"".equals(netip)) {
return netip;
} else {
return localip;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
明天继续更新,今天还有事做
S2SH邮件注册激活后注册成功的更多相关文章
- OpenCores注册步骤和成功提交
一 OpenCores 网站简介,这个是全世界最大的FPGA开源IP核网站.由于最近在学习USB2.0host control IP,所以想去网上下载相关的IP例程学习.通过搜索发现,有两个网站十分 ...
- springboot 注册服务注册中心(zk)的两种方式
在使用springboot进行开发的过程中,我们经常需要处理这样的场景:在服务启动的时候,需要向服务注册中心(例如zk)注册服务状态,以便当服务状态改变的时候,可以故障摘除和负载均衡. 我遇到过两种注 ...
- spring cloud eureka注册原理-注册失败填坑
写在前面 我们知道Eureka分为两部分,Eureka Server和Eureka Client.Eureka Server充当注册中心的角色,Eureka Client相对于Eureka Serve ...
- spring cloud系列教程第八篇-修改服务名称及获取注册中心注册者的信息
spring cloud系列教程第八篇-修改服务名称及获取注册中心注册者的信息 本文主要内容: 1:管理页面主机名及访问ip信息提示修改 2:获取当前注册中心的服务列表及每个服务对于的服务提供者列表 ...
- [C#反编译教程]001.Reflector.NET反编译工具 v8.5绿色版+注册机+注册教程
截图 下载地址 Reflector.NET反编译工具 v8.5绿色版+注册机 下载地址:http://pan.baidu.com/s/1mgN1Cpi 密码:mx19 简介 .NET Reflecto ...
- Dubbo系列之 (二)Registry注册中心-注册(1)
引导 dubbo的服务的注册与发现,需要通过第三方注册中心来协助完成,目前dubbo支持的注册中心包括 zookeeper,consul,etcd3,eureka,nacas,redis,sofa.这 ...
- Dubbo系列之 (二)Registry注册中心-注册(2)
引导 本章主要介绍下AbstractRegistry.FailbackRegistry的作用和源码. AbstractRegistry 首先,直接引出这个类的作用,该类主要把服务提供者信息缓存本地文件 ...
- 注册Goole 账户 成功注册
注册谷歌邮箱等Google帐号时提示:此电话号码无法用于进行验证怎么办? 相信很多网友在注册Google帐号的时候需要手机号码验证,比如在遇到过注册Google Gmail到最后一步“验证您的帐号” ...
- 这两天老是有兄弟问到Vue的登陆和注册,登陆成功留在首页,没有登录回到登录页面,现在我用最简单实用的方法实现(两分钟技就看懂)
其实登录注册,并且登录一次保持登录的状态,是每个项目都需要实现的功能. 网上也有很多的方法,不过,不是通俗易懂,在这里说一下我自己的方法,非常简单实用核心就是用localStorage存.取数据,这样 ...
随机推荐
- JavaScript学习总结【11】、JS 运动
动画效果在网站中是一种非常常见的交互式体验效果,比如侧边栏分享.图片淡入淡出,我们把这种动画效果就叫做运动,也就是让物体动起来.如果想让一个物体动起来,无非就是改变它的速度,也就是改变属性值,比如 l ...
- phpcms V9 添加模块(转)
转自:http://www.cnblogs.com/Braveliu/p/5101345.html 为phpcms创建一个模块的开发流程 [1]创建模块目录 通过前面的学习,我们已经知道phpcms ...
- __construct()和__initialize()
ThinkPHP中的__initialize()和类的构造函数__construct()网上有很多关于__initialize()的说法和用法,总感觉不对头,所以自己测试了一下.将结果和大家分享.不对 ...
- 大话设计模式(带目录完整版).pdf等
点击进入百度网盘 大话设计模式(带目录完整版).pdf等 保存至网盘下载二维码举报 赞(0)| 评论 | 分享至 分享时间:2014-04-01 11:02 | 467次浏览 130次下载 81次保存 ...
- Net Core Docker
Net Core Docker轻量级的web框架 .net core现在已经有了大的发展,虽然笔者现在已经从事python开发,但是一直在关注.net的发展,在逛博客园的时候,发现有大家都会提到N ...
- 导航 -MapKit - 获取路线信息绘制导航路线
#import "PPViewController.h" #import <MapKit/MapKit.h> #import "PPAnnotation.h& ...
- html多行注释方法
Html单行:<!-- -->多行:<!-- -->javascript单行://多行:/* */Vbscript单行:'多行:'ASP <% %>中: 单行:' ...
- jquery - 通过点击切换文字内容
今天要写一个简单的显示/隐藏效果,本以为是挺简单的事儿,没想到还真因为基本功不扎实遇到了问题,这里跟大家分享一下. 百度了很多方法,精简能用的干货实在太少,最后还是通过去查jq的官方api才找到了解决 ...
- Java精确计算
Java精确计算 如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out. ...
- Cocos2d-x 3.0 beta 中加入附加项目,解决无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or directory”
Cocos2d-x 3.0 Alpha 1开始 对目录结构进行了整合.结果有些附加项目也被在项目中被精简出去. 比如说如果你需要使用CocoStdio导出的JSON.或使用Extensions扩展库, ...