在Maven项目中关于SSM框架中邮箱验证登陆

Posted 折腾青春

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Maven项目中关于SSM框架中邮箱验证登陆相关的知识,希望对你有一定的参考价值。

1、你如果要在maven项目中进行邮箱邮箱验证,你首先要先到pom.xml文件中配置mail.jar,activation.jar包

   <dependency>
       <groupId>javax.mail</groupId>
       <artifactId>mail</artifactId>
        <version>1.4</version>
       </dependency>
       
     
       
       <dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

 

2、然后你可以写一个简单的jsp页面进行测试

<form action="<c:url value=‘/MailLogin/mail‘/>" method="post">
  	
  	 邮箱验证<input type="text" name="mail"/><br/><br/>
  	      <input type="submit" value="注册"/>
  	 </form>

  

然后在springMVC下面注入@Controll

@Controller
@RequestMapping("/MailLogin")
public class mailLogin {
    
    @RequestMapping("/mail")
    public String mailSucc(HttpServletRequest request) throws Exception{
        
        
         String toEMAIL = request.getParameter("mail");         //对方邮箱
          String TITLE = "邮箱注册成功ing了";       //标题
          String CONTENT =toEMAIL+"你成功激活了!!!";        //内容
          JavaEmailSender.sendEmail(toEMAIL, TITLE, CONTENT);
        return "/mailSucc";
        
    }

之后就写邮件发送代码

package cn.hncu.utils;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.sun.mail.util.MailSSLSocketFactory;
public class JavaEmailSender {
    
     public static void sendEmail(String toEmailAddress,String emailTitle,String emailContent)throws Exception{
            Properties props = new Properties();
         
            // 开启debug调试
            props.setProperty("mail.debug", "true");
            // 发送服务器需要身份验证
            props.setProperty("mail.smtp.auth", "true");
            // 设置邮件服务器主机名
            props.setProperty("mail.host", "smtp.qq.com");
            // 发送邮件协议名称
            props.setProperty("mail.transport.protocol", "smtp");
         
            /**SSL认证,注意腾讯邮箱是基于SSL加密的,所有需要开启才可以使用**/
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            props.put("mail.smtp.ssl.enable", "true");
            props.put("mail.smtp.ssl.socketFactory", sf);
         
            //创建会话
            Session session = Session.getInstance(props);
         
            //发送的消息,基于观察者模式进行设计的
            Message msg = new MimeMessage(session);
            msg.setSubject(emailTitle);
            //使用StringBuilder,因为StringBuilder加载速度会比String快,而且线程安全性也不错
            StringBuilder builder = new StringBuilder();
            builder.append("\n"+emailContent);
            builder.append("\n时间 " + new Date());
            msg.setText(builder.toString());
            msg.setFrom(new InternetAddress("你的邮箱号码"));
         
            Transport transport = session.getTransport();
            transport.connect("smtp.qq.com", "你的邮箱号码", "你的登陆密码、(你开启POP3/SMTP服务申请的独立密码)");
            //发送消息
            transport.sendMessage(msg, new Address[] { new InternetAddress(toEmailAddress) });
            transport.close();
          }

     
        }

如果你没有设置开启SSL,那么你的程序就会报错,就会出现SMTP服务连接失败,还有就是你的QQ邮箱中的POP3/STMP服务要设置打开,你在测试发送给其他邮箱的时候,你的POP3/STMP服务也要打开,不然就会访问不了,报出连接失败的错误信息来!你要查看你自己的是否发送成功可以自己登陆另一个邮箱去查看,也可以去查看你控制台输出的消息:

   /**SSL认证,注意腾讯邮箱是基于SSL加密的,所有需要开启才可以使用**/
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            props.put("mail.smtp.ssl.enable", "true");
            props.put("mail.smtp.ssl.socketFactory", sf);

下面是我发送成功之后控制台输出的消息:
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.qq.com", port 465, isSSL true
220 smtp.qq.com Esmtp QQ Mail Server
DEBUG SMTP: connected to host "smtp.qq.com", port: 465

EHLO 0R9PX2BMMB5TJIB
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "73400320"
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg ""
DEBUG SMTP: Found extension "MAILCOMPRESS", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM 
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN succeeded
DEBUG SMTP: use8bit false
MAIL FROM:<[email protected]>
250 Ok
RCPT TO:<[email protected]>
250 Ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   [email protected]
DATA
354 End data with <CR><LF>.<CR><LF>
From: 489291805@qq.com
Message-ID: <[email protected]>
Subject: =?UTF-8?B?6YKu566x5rOo5YaM5oiQ5YqfaW5n5LqG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

如果你没又没进行设置SSL的话默认的这个端口就是25    ----》

DEBUG SMTP: connected to host "smtp.qq.com", port: 465
 



以上是关于在Maven项目中关于SSM框架中邮箱验证登陆的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot整合ssm案例中关于查询

spring + mybatis + springMVC + maven 实现登陆的一些功能

ssm框架整合+maven项目创建

Java项目:在线嘿嘿网盘系统设计和实现(java+Springboot+ssm+mysql+maven)

Java项目:在线嘿嘿网盘系统设计和实现(java+Springboot+ssm+mysql+maven)

Maven多模块项目,框架SSM怎么改成springboot的?