java中实现邮箱验证

在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中一样的,可以进行参考上方的代码

本文是我自己书写的如有不对的地方,请指正
转发加链接哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值