最近在写修改密码模块,那么邮箱验证是其中一种方式
附上,java 发送Email 代码,(提示,需要去发送邮件账号所在网站获得授权码,只有有了授权码,java才能登录账号,发送邮件) 具体详情移步百度
jar下载地址:这两个都是的,都要下载,如果没有积分,关注我,我直接发
https://download.csdn.net/download/weixin_40652498/12100058
https://download.csdn.net/download/weixin_40652498/12099197
重点:发送邮件端口问题, 25与465
#邮件对象
public class SendEmailUser {
private String sendUserName; //发送名称
private String to; //收件人
private String cc; //抄送人
private String bcc; //密送
private String theme;//主题
private String text; //正文
get,set,toString
}
#SendEmail.java
package com.nextStep.utils;
import com.nextStep.entity.SendEmailUser;
import com.nextStep.service.UserServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.FileOutputStream;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
/**
* 发送邮件
*/
public class SendEmail {
final private String account="邮箱";
final private String password="邮箱授权码";
final private static Logger logger = LoggerFactory.getLogger(SendEmail.class);
private MimeMessage m =null;
private Session session=null;
private Properties config=null;
/**
* 发送邮件
* @throws Exception
*/
public boolean sendEmailTO(SendEmailUser sendEmailUser) throws Exception {
try{
m=createEmail(sendEmailUser);
session=m.getSession();
session.setDebug(true);
config=session.getProperties();
//config.put("mail.transport.protocol", "smtp");
config.put("mail.smtp.host", "smtp.163.com");
//config.put("mail.smtp.port", "25"); //阿里云行不通,只有用465端口
config.put("mail.smtp.port", "465");
config.put("mail.smtp.ssl.enable", true); //465需要开启
config.put("mail.smtp.auth", "true");
//config.put("mail.smtp.ssl", "false");
Transport.send(m);
}catch (Exception e){
throw new Exception(e);
}
return true;
}
/**
* 创建一封邮件
* @param sendEmailUser 邮件
* @return
* @throws Exception
*/
private MimeMessage createEmail(SendEmailUser sendEmailUser) throws Exception{
Properties props=new Properties();
Session session=Session.getInstance(props,new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(account, password);
}
});
//创建邮件对象
MimeMessage m=new MimeMessage(session);
//设置发件人
Address from =new InternetAddress(account ,sendEmailUser.getSendUserName(),"utf-8");
m.setFrom(from);
//收件人
m.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(sendEmailUser.getTo()));
//设置抄送人
if(sendEmailUser.getCc()!=null ){
m.setRecipient(RecipientType.CC, new InternetAddress(sendEmailUser.getCc()));
}
//设置密送
if(sendEmailUser.getBcc()!=null ){
m.setRecipient(RecipientType.BCC, new InternetAddress(sendEmailUser.getBcc()));
}
//设置邮件主题
m.setSubject(sendEmailUser.getTheme(),"utf-8");
//设置邮件正文
m.setContent(sendEmailUser.getText(),"text/plain;charset=utf-8");
//设置邮件发送时间
m.setSentDate(new Date());
//确认设置完毕
m.saveChanges();
return m;
}
}
package com.nextStep.entity;
public class SendEmailUser {
private String sendUserName="下一步科技"; //发送名称
private String to; //收件人
private String cc; //抄送人
private String bcc; //密送
private String theme;//主题
private String text; //正文
public SendEmailUser() {
}
public SendEmailUser(String sendUserName, String to, String cc, String bcc, String theme, String text) {
this.sendUserName = sendUserName;
this.to = to;
this.cc = cc;
this.bcc = bcc;
this.theme = theme;
this.text = text;
}
public String getSendUserName() {
return sendUserName;
}
public void setSendUserName(String sendUserName) {
this.sendUserName = sendUserName;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getCc() {
return cc;
}
public void setCc(String cc) {
this.cc = cc;
}
public String getBcc() {
return bcc;
}
public void setBcc(String bcc) {
this.bcc = bcc;
}
public String getTheme() {
return theme;
}
public void setTheme(String theme) {
this.theme = theme;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
@Override
public String toString() {
return "SendEmailUser{" +
"sendUserName='" + sendUserName + '\'' +
", to='" + to + '\'' +
", cc='" + cc + '\'' +
", bcc='" + bcc + '\'' +
", theme='" + theme + '\'' +
", text='" + text + '\'' +
'}';
}
}