JaveWeb实现网站注册发送邮箱
pom.xml导入的包
**<!--发送邮箱需要的包-->**
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version> //版本号
</dependency>
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
实体类User
package top.yqqk.pojo;
import java.io.Serializable; //序列化
public class User implements Serializable {
private String username;
private String password;
private String email;
public User() {
}
public User(String username, String password, String email) {
this.username = username;
this.password = password;
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
'}';
}
}
工具类SendMail:实现发送邮箱的方法(使用多线程)
package top.yqqk.utils;
import com.sun.mail.util.MailSSLSocketFactory;
import top.yqqk.pojo.User;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class SendMail extends Thread{
private User user;
public SendMail(User user) {
this.user = user;
}
@Override
public void run() {
try {
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.qq.com");//设置QQ邮箱服务器
prop.setProperty("mail.transport.protocol","smtp");//邮箱发送协议
prop.setProperty("mail.smtp.auth","true");//需要验证用户名密码
//关于QQ邮箱,还要设置SSL加密,加上以下代码即可
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable","true");
prop.put("mail.smtp.ssl.socketFactory",sf);
//使用JavaMail发送邮件的5个步骤
//1.创建定义整个应用程序所需的环境信息的Session对象
//QQ才有
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//发件人邮件名,授权码
return new PasswordAuthentication("1214659897@qq.com", "xcdsqlvrgplubaai");
}
});
//开启Session的Debug模式,可以看到发送邮件的运行状态 (可以不开)
session.setDebug(true);
//2.通过session得到transport对象
Transport ts = session.getTransport();
//3.使用邮箱的用户名和授权码连上邮件服务器
ts.connect("smtp.qq.com","1214659897@qq.com","xcdsqlvrgplubaai");
//4.创建邮件
//创建邮箱对象 需要传递session
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("1214659897@qq.com")); //指明邮件的发件人
message.setRecipient(Message.RecipientType.TO,new InternetAddress(user.getEmail()));
message.setSubject("用户邮件注册");//邮件的主题
String info = "恭喜你注册成功,你的用户名是:"+user.getUsername()+";你的密码是:"+user.getPassword()+"请妥善保管";
/*准备正文数据*/
message.setContent(info,"text/html;charset=UTF-8");
message.saveChanges();//保存修改
/*=============================================================================*/
//5.发送邮件
ts.sendMessage(message,message.getAllRecipients());
//关闭连接
ts.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
Servlet:接收处理请求
package top.yqqk.servlet;
import top.yqqk.pojo.User;
import top.yqqk.utils.SendMail;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class RegisterServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//接收前端发来的参数
String username = req.getParameter("username");
String password = req.getParameter("password");
String email = req.getParameter("email");
User user = new User(username, password, email);
System.out.println(username);
System.out.println(password);
System.out.println(email);
//用户注册成功后,发送邮件,使用线程来发送邮件,防止出现耗时,和网站注册人数过多的情况
SendMail sendMail = new SendMail(user);
sendMail.start();//开启多线程
req.setAttribute("message","注册成功,我们已经发送了一封邮件到你的邮箱,请注意查收");
req.getRequestDispatcher("info.jsp").forward(req,resp);
//
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}

浙公网安备 33010602011771号