在java中,我们可以同过一些第三方的组件进行完成一些指定的特色操作,比如短信验证啊,邮箱验证子类的
这里我们进行一个邮箱的验证,短信验证可以去我的其他帖子中进行一个查找,有代码书写
在实现email的邮箱验证的时候,我们需要导入一个第三方的jar包mail,微服开发的话,在spring下是有该包的
ssm开发中的邮箱验证代码
@RequestMapping(value = "/email",method = RequestMethod.POST)
@ResponseBody
public String sendEmailUrl(@RequestParam(value = "email",required = false)String email) throws Exception {
String url="http://localhost:8080/auth/icy/validemailurl";//设置邮箱验证连接
String ticket= MD5.getMd5("icy"+new Date().getTime(),32);//生成一个64位的加密ticket
String md5email=MD5.getMd5(email,32);//对用户邮箱生成一个长度为32为的加密邮箱
String result=url+"?ticket"+ticket+"&email"+md5email;//发送给用户邮箱的激活连接
mailServer.sendUrlMail(email,result);//向用户邮箱发送连接
IcyUserVo icyUserVo=new IcyUserVo();//建立vo视图
icyUserVo.setMsg("账号激活链接已经发送,请注意查收!");
icyUserVo.setStatus(Constants.EMAIL_SEND_SUCCESS);
redisAPI.set(md5email,result);//将数据保存到缓存服务器中
return JSON.toJSONString(icyUserVo);
}
邮箱发送的implement实现类
package cn.icy.auth.service.userServer;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class MailServiceImpl implements MailService {
@Resource
private JavaMailSenderImpl mailSender;
@Resource
private SimpleMailMessage mailMessage;
@Override
public void sendActivationMail(String mailto, String activationCode)throws Exception {
//设置接受方
mailMessage.setTo(mailto);
//设置发送文本
mailMessage.setText("注册邮箱:"+mailto +" 激活码:"+activationCode);
//发送邮件
mailSender.send(mailMessage);
}
@Override
public void sendUrlMail(String mailto, String url) throws Exception {
//设置接受方
mailMessage.setTo(mailto);
//设置发送文本
mailMessage.setText("你好!\n" +
"\n" +
"请点击以下链接,我们协助您激活账户:\n\n"+url);
//发送邮件
mailSender.send(mailMessage);
}
}
接口的话没有什么代码,可以通过实现类进行一个书写为了给小白一个了解的话我这也进行书写吧
package cn.icy.auth.service.userServer;
public interface MailService {
void sendActivationMail(String mailto,String activationCode)throws Exception;
void sendUrlMail(String mailto,String url)throws Exception;
}
在SSM中最关键的就是一个配置文件的书写吧,我也不卖关子了,直接给你们鲜货
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.aliyun.com"/>//这里是发件人的邮箱类型,需要开启一个叫SMTP的邮箱认证吧,反正阿里云是开启的
<property name="port" value="465"/>
<property name="username" value=""********这里是发送邮件人的邮箱**********""/>
<property name="password" value=""********这里是发送邮件人的密码**********""/>
<property name="defaultEncoding" value="UTF-8"/>
<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="mailMessage" class="org.springframework.mail.SimpleMailMessage" scope="prototype">
<property name="from" value="********这里是发送邮件人的邮箱**********"/>
<property name="subject" value="【****】请激活您的账户"/>
</bean>
</beans>
导入的jar包
<!--邮箱验证必须的jar包-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
没有该jar包的可以去mavenio中进行一个查找下载
下面是springCloud中的一个邮箱验证的代码
implement实现类中的代码
package com.kgc.service.userservice;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class MailServiceImpl implements MailService {
@Resource
private JavaMailSenderImpl mailSender;
@Override
public void sendActivationMail(String mailto, String activationCode)throws Exception {
SimpleMailMessage mailMessage = new SimpleMailMessage();
//设置接受方
mailMessage.setTo(mailto);
/*设置邮件标题*/
mailMessage.setSubject("晖哥叫你吃饭来了!");
/*设置发件人*/
mailMessage.setFrom("hui_2442907491@163.com");
//设置发送文本
mailMessage.setText("注册邮箱:"+mailto +" 激活码:"+activationCode);
//发送邮件
mailSender.send(mailMessage);
}
@Override
public void sendUrlMail(String mailto, String url) throws Exception {
SimpleMailMessage mailMessage = new SimpleMailMessage();
//设置接受方
mailMessage.setTo(mailto);
//设置发送文本
mailMessage.setText("你好!\n" +
"\n" +
"请点击以下链接,我们协助您激活账户:\n\n"+url);
//发送邮件
mailSender.send(mailMessage);
}
}
在springCloud中是简化了的代码书写量的,不在需要配置文件,但是也需要导入mail的依赖jar包,并且是与SSM中的jar包是不一样的,注意了
需要导入的jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
在springcloud中的配置文件是不需要的,但是我们要在yml文件进行对email的一个配置,
spring:
mail:
host: smtp.163.com //发送的邮箱类型
port: 465 //端口固定
username: //发件人的邮箱
password: //发件人的密码
default-encoding: utf-8
properties:
mail:
smtp:
socketFactory.class: javax.net.ssl.SSLSocketFactory
debug: true //是否开启测试模式
其余如果有遗落的地方是与是ssm中一样的,可以进行参考上方的代码
本文是我自己书写的如有不对的地方,请指正
转发加链接哦!