java邮件中验证的解释
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java邮件中验证的解释相关的知识,希望对你有一定的参考价值。
我在学习java发送邮件的时候在网上找了一个例子,是可以正确运行的,
大家在百度里搜 java 发送邮件 应该很容易就找到
这个示例有4各类,出了一个main'以外,其余三个是发送的实现
其中有一个类的代码是
MyAuthenticator.java
package com.util.mail;
import javax.mail.*;
publicclass MyAuthenticator extends Authenticator
String userName=null;
String password=null;
public MyAuthenticator()
public MyAuthenticator(String username, String password)
this.userName = username;
this.password = password;
protected PasswordAuthentication getPasswordAuthentication()
returnnew PasswordAuthentication(userName, password);
我看分享的人一般都说是关于javamail验证错误的问题,但是我没有看懂这个的工作原理,请哪位大侠不吝赐教
Properties props = System.getProperties();// 创建Properties 对象
// 添加smtp服务器属性
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true"); // 需要验证
props.put("mail.transport.protocol", "smtp");
首先是先由这个props 对象 然后根据这个对象的host找到你要用的邮件服务 如果配163的域名 就找163的邮件服务 如果是本地的 就找本地的 然后打开Session
下一步就可以传 用户名和密码到邮件服务里面去了
returnnew PasswordAuthentication(userName, password); 就是这里
如果邮件服务里面有你的这个用户名 密码也是对的 就成功打开Session
// 定义邮件信息
MimeMessage message = new MimeMessage(session);
吧Session和邮件服务绑定
开始在 message里面写入你的邮件 。。。
session.getTransport("smtp").send(message); 最后 指定SMTP 的方式 吧你的邮件发送出去
整个过程就是这样 关于原理 你可以看你的发送邮件的类 一步一个过程 很容易就明白了 参考技术A JAVAMAIL结合邮件服务的时候 用的
Properties props = System.getProperties();// 创建Properties 对象
// 添加smtp服务器属性
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true"); // 需要验证
props.put("mail.transport.protocol", "smtp");
首先是先由这个props 对象 然后根据这个对象的host找到你要用的邮件服务 如果配163的域名 就找163的邮件服务 如果是本地的 就找本地的 然后打开Session
下一步就可以传 用户名和密码到邮件服务里面去了
returnnew PasswordAuthentication(userName, password); 就是这里
如果邮件服务里面有你的这个用户名 密码也是对的 就成功打开Session
// 定义邮件信息
MimeMessage message = new MimeMessage(session);
吧Session和邮件服务绑定
开始在 message里面写入你的邮件 。。。
session.getTransport("smtp").send(message); 最后 指定SMTP 的方式 吧你的邮件发送出去
整个过程就是这样 关于原理 你可以看你的发送邮件的类 一步一个过程 很容易就明白了 参考技术B return new PasswordAuthentication(userName, password);
这个只是把用户名密码传到PasswordAuthentication这个类中去。实现验证的。这个地方看不出什么来。
Java实现注册时发送激活邮件验证
在很多网站注册的时候,为了验证用户信息的真实合法,往往需要验证用户所填邮件的准确性。形式为:用户注册时填写邮箱,注册完成后,网站会向用户所填邮箱发送一封激活邮件,用户点击激活邮件中的链接后,方可完成注册。
最近项目中也用到这个需求,做了个Demo与大家分享,大至思想如下:
数据库表结构
用户表t_user有五个字段分别为用户名、密码、邮箱地址、激活码、状态:
username | password | email |code | state |
核心代码:
UserManager.java
import java.util.Properties;
import java.util.UUID;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import dao.UserDao;
public class UserManager {
/**
* 注册用户
* @param username 用户名
* @param password 密码
* @param email 邮箱
* @return 是否注册成功
*/
public Boolean Register(String username,String password,String email){
Boolean result=false;
//生成用户code
String code=UUID.randomUUID().toString().replace("-", "");
//添加用户
UserDao userDao=new UserDao();
result=userDao.AddUser(username, password, email, code);
//向用户发送激活邮件
sendMail(email,code);
return result;
}
/**
* 发送激活邮件
* @param to 收件人邮箱地址
* @param code 激活码
*/
public static boolean sendMail(String to, String code) {
try {
Properties props = new Properties();
props.put("username", "123456@163.com");
props.put("password", "123456");
props.put("mail.transport.protocol", "smtp" );
props.put("mail.smtp.host", "smtp.163.com");
props.put("mail.smtp.port", "25" );
Session mailSession = Session.getDefaultInstance(props);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("123456@163.com"));
msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
msg.setSubject("激活邮件");
msg.setContent("<h1>此邮件为官方激活邮件!请点击下面链接完成激活操作!</h1><h3><a href=‘http://localhost:8080/SendMail/servlet/ActiveServlet?code="+code+"‘>http://localhost:8080/SendMail/servlet/ActiveServlet</a></h3>","text/html;charset=UTF-8");
msg.saveChanges();
Transport transport = mailSession.getTransport("smtp");
transport.connect(props.getProperty("mail.smtp.host"), props
.getProperty("username"), props.getProperty("password"));
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
return false;
}
return true;
}
/**
* 激活用户
* @param code 用户激活码
* @return 是否激活成功
*/
public Boolean Active(String code){
UserDao userDao=new UserDao();
String username=userDao.findUserByCode(code);
if(username!=null && username!=""){
//如果存在用户,将此用户状态设为可用
userDao.setState(username);
return true;
}else{
return false;
}
}
}
当用户注册时
1、为用户生成随机的激活码(此激活码是添加根据代码规则自动生成的,这里的激活码以随机生成的UUID为例);
2、添加一条用户记录;
3、向用户发送激活邮件。
用户点击邮箱中的链接后,系统根据用户点击链接发来的激活码去数据库中查询与该激活码匹配的用户记录,如果记录存在,则将用户状态更改为可用的状态。
陕西老医协生殖医院http://www.lyxbyby.net http://www.sxlyxyy.com/ksjs/fk/326.html http://wangzepeng.cn/yytg/27.html
以上是关于java邮件中验证的解释的主要内容,如果未能解决你的问题,请参考以下文章