35-网站实现邮件发送

这篇博客展示了如何在Java Web应用中实现邮件发送功能。通过使用JavaMail API和QQ邮箱SMTP服务,用户在注册时可以接收到确认邮件。邮件内容包含用户名和密码,以确保注册成功并提供安全信息。代码包括JSP表单、实体类、邮件发送工具类以及Servlet处理注册请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网站实现邮件发送

  • 导相关的包

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>


  <form action="${pageContext.request.contextPath}/RegisterServlet.do" method="post">
    用户名:<input type="text" name="username"> <br>
    密码:<input type="password" name="password"><br>
    邮箱:<input type="text" name="email"><br>
    <input type="submit" value="注册">
  </form>


  </body>
</html>

实体类

public class User implements Serializable {
    private String username;
    private String password;
    private String email;
//getter setter toString 有参无参
}

utils

package com.tian.utils;

import com.sun.mail.util.MailSSLSocketFactory;
import com.tian.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 String from="QQ号@qq.com";
    private String username="QQ号@qq.com";
    private String password="授权码";
    private String host="smtp.qq.com";
    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.sockeFactory",sf);
     //使用javaMail发送邮件的五个步骤

     //1.创建定义整个应用程序所需的环境信息的session对象
     //qq才有!其他邮箱就不用
     Session session=Session.getDefaultInstance(prop, new Authenticator() {
         @Override
         protected PasswordAuthentication getPasswordAuthentication() {
             return new PasswordAuthentication("QQ号@qq.com","授权码");
         }
     });
     //2.通过session得到transport对象
     Transport ts = session.getTransport();
     //3.使用邮箱的用户名和授权码连上邮件服务器
     ts.connect(host,username,password);
     //4.创建邮件:写邮件
     MimeMessage message = new MimeMessage(session);
     message.setFrom(new InternetAddress(from));
     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){
     throw new RuntimeException(e);
 }

   }
}

RegisterServlet

package com.tian.servlet;

import com.tian.pojo.User;
import com.tian.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 doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String email = req.getParameter("email");
        System.out.println(1111);
        User user = new User(username, password, email);
        //当用户注册成功之后,给用户发送一封邮件
        //我们使用线程来专门发送邮件,防止出现耗时,和网站注册人数过多的情况
        Sendmail send = new Sendmail(user);
        send.start();

        req.setAttribute("message","注册成功,我们已经发了一封电子邮件,注意查收");
        req.getRequestDispatcher("info.jsp").forward(req,resp);
    }
}

  • 注册到web.xml

info.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${message}
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值