• WebMail:网页注册成功发送邮件


    1.特别注意

    isELIgnored="false"

    如果没有这个El表达式无法识别

    2.pre work

    pox.xml

    
      
        junit
        junit
        3.8.1
        test
      
    
      
        javax.servlet
        javax.servlet-api
        4.0.1
      
    
        
        
          javax.mail
          mail
          1.4.7
        
        
        
          javax.activation
          activation
          1.1.1
        
    
    
    
      
        org.projectlombok
        lombok
        1.18.24
        provided
      
    

    3.jsp

    1. <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    2. <html>
    3. <body>
    4. <h2>注册</h2>
    5. <form action="${pageContext.request.contextPath}/RegisterServlet.do" method="post">
    6. username:<input type="text" name="username"><br>
    7. password:<input type="password" name="psw"><br>
    8. email:<input type="email" name="email"><br>
    9. <input type="submit" value="register">
    10. </form>
    11. </body>
    12. </html>

    info.jsp

    ${msg}

     
    

    4.servlet

    1. package com.qing.servlet;
    2. import com.qing.pojo.user;
    3. import com.qing.utils.SendMail;
    4. import javax.servlet.ServletException;
    5. import javax.servlet.http.HttpServlet;
    6. import javax.servlet.http.HttpServletRequest;
    7. import javax.servlet.http.HttpServletResponse;
    8. import java.io.IOException;
    9. public class RegisterServlet extends HttpServlet {
    10. @Override
    11. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    12. //接收用户,封装对象
    13. String name=req.getParameter("username");
    14. String psw=req.getParameter("psw");
    15. String email=req.getParameter("email");
    16. System.out.println(name+" "+psw+" "+email);
    17. //用线程发送邮件,避免耗时过多,提高体验
    18. user user=new user(name,psw,email);
    19. SendMail send=new SendMail(user);
    20. send.start();
    21. req.setAttribute("msg","注册成功,邮件已发送,请注意查收!");
    22. req.getRequestDispatcher("info.jsp").forward(req,resp);
    23. }
    24. @Override
    25. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    26. }
    27. }

    5.utils

    1. package com.qing.utils;
    2. import com.qing.pojo.user;
    3. import com.sun.mail.util.MailSSLSocketFactory;
    4. import javax.mail.*;
    5. import javax.mail.internet.InternetAddress;
    6. import javax.mail.internet.MimeMessage;
    7. import java.util.Properties;
    8. //多线程提高用户体验,异步处理
    9. public class SendMail extends Thread{
    10. //用于给用户发送邮件的邮箱
    11. private String from="@qq.com";
    12. //邮箱用户名
    13. private String name="@qq.com";
    14. //授权码
    15. private String password="授权码";
    16. //发送邮件的服务器地址
    17. private String host="smtp.qq.com";
    18. private user user;
    19. public SendMail(user user){
    20. this.user=user;
    21. }
    22. //重写run
    23. @Override
    24. public void run(){
    25. try{
    26. Properties prop=new Properties();
    27. prop.setProperty("mail.host",host);//设置qq邮件服务器
    28. prop.setProperty("mail.transport.protocol","smtp");//邮件发送协议
    29. prop.setProperty("mail.smtp.auth","true");//验证用户账号密码
    30. //qq 加密ssl
    31. MailSSLSocketFactory sf=new MailSSLSocketFactory();
    32. sf.setTrustAllHosts(true);
    33. prop.put("mail.smtp.ssl.enable","true");
    34. prop.put("mail.smtp.ssl.socketFactory",sf);
    35. Session session=Session.getDefaultInstance(prop, new Authenticator() {
    36. protected PasswordAuthentication getPasswordAuthentication() {
    37. return new PasswordAuthentication("@qq.com","授权码");
    38. }
    39. });
    40. session.setDebug(true);
    41. Transport ts=session.getTransport();
    42. ts.connect(host,name,password);
    43. MimeMessage message=new MimeMessage(session);
    44. //指明发件人
    45. message.setFrom(new InternetAddress(from));
    46. //收件人
    47. message.setRecipient(Message.RecipientType.TO,new InternetAddress(user.getEmail()));
    48. //邮件标题
    49. message.setSubject("用户注册邮件");
    50. String info="注册成功!用户名:"+user+" 密码:"+user.getPsw();
    51. message.setContent(info,"text/html;charset=UTF-8");
    52. message.saveChanges();
    53. //5.发送邮件
    54. ts.sendMessage(message,message.getAllRecipients());
    55. //6.关闭连接
    56. ts.close();
    57. } catch (Exception e) {
    58. throw new RuntimeException(e);
    59. } }}

  • 相关阅读:
    Linux—软件管理
    js 校验文字中是否存在emoji
    【CentOS7】vsftpd学习笔记
    再次捕获!重保期间拦截针对Coremail的钓鱼攻击
    Vue Router 路由动态缓存组件
    css3 中calc的用法?
    Redis优化 RDB AOF持久化
    JavaScript:实现ReverseNumber反转数字算法 (附完整源码)
    码蹄集 - MT2322 - 还是跑图:还是简单图问题
    【Java 进阶篇】JSTL 详解
  • 原文地址:https://blog.csdn.net/2201_75903640/article/details/133824921