JavaWeb中應用JavaMail完成發送郵件功效實例詳解。本站提示廣大學習愛好者:(JavaWeb中應用JavaMail完成發送郵件功效實例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是JavaWeb中應用JavaMail完成發送郵件功效實例詳解正文
如今許多的網站都供給有效戶注冊功效, 平日我們注冊勝利以後就會收到一封來自注冊網站的郵件。郵件外面的內容能夠包括了我們的注冊的用戶名和暗碼和一個激活賬戶的超鏈接等信息。明天我們也來完成一個如許的功效,用戶注冊勝利以後,就將用戶的注冊信息以Email的情勢發送到用戶的注冊郵箱傍邊,完成發送郵件功效就得借助於JavaMail了。
1、搭建開辟情況
1.1、創立Web項目
1.2、用戶注冊的Jsp頁面
register.jsp
<%@ page language="java" pageEncoding="UTF-"%> <!DOCTYPE HTML> <html> <head> <title>注冊頁面</title> </head> <body> <form action="${pageContext.request.contextPath}/servlet/RegisterServlet" 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>
1.3、新聞提醒頁面
message.jsp
<%@ page language="java" pageEncoding="UTF-"%> <!DOCTYPE HTML> <html> <head> <title>新聞提醒頁面</title> </head> <body> ${message} </body> </html>
2、編寫處置用戶注冊處置法式
2.1、開辟封裝用戶注冊信息的domain
User.java
package me.gacl.domain; public class User { private String username; private String password; private String 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; } }
2.2、編寫郵件發送功效
發送郵件是一件異常耗時的工作,是以這裡設計一個線程類來發送郵件
package me.gacl.web.controller; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import me.gacl.domain.User; /** * @ClassName: Sendmail * @Description: Sendmail類繼續Thread,是以Sendmail就是一個線程類,這個線程類用於給指定的用戶發送Email * @author: 孤獨蒼狼 * @date: -- 下晝:: * */ public class Sendmail extends Thread { //用於給用戶發送郵件的郵箱 private String from = "[email protected]"; //郵箱的用戶名 private String username = "gacl"; //郵箱的暗碼 private String password = "郵箱暗碼"; //發送郵件的辦事器地址 private String host = "smtp.sohu.com"; private User user; public Sendmail(User user){ this.user = user; } /* 重寫run辦法的完成,在run辦法中發送郵件給指定的用戶 * @see java.lang.Thread#run() */ @Override public void run() { try{ Properties prop = new Properties(); prop.setProperty("mail.host", host); prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.auth", "true"); Session session = Session.getInstance(prop); session.setDebug(true); Transport ts = session.getTransport(); ts.connect(host, username, password); Message message = createEmail(session,user); ts.sendMessage(message, message.getAllRecipients()); ts.close(); }catch (Exception e) { throw new RuntimeException(e); } } /** * @Method: createEmail * @Description: 創立要發送的郵件 * @Anthor:孤獨蒼狼 * * @param session * @param user * @return * @throws Exception */ public Message createEmail(Session session,User user) throws Exception{ 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-"); message.saveChanges(); return message; } }
2.3、編寫處置用戶注冊的Servlet
package me.gacl.web.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import me.gacl.domain.User; import me.gacl.service.UserService; public class RegisterServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ String username = request.getParameter("username"); String password = request.getParameter("password"); String email = request.getParameter("email"); User user = new User(); user.setEmail(email); user.setPassword(password); user.setUsername(username); System.out.println("把用戶信息注冊到數據庫中"); //用戶注冊勝利以後就應用用戶注冊時的郵箱給用戶發送一封Email //發送郵件是一件異常耗時的工作,是以這裡開拓了另外一個線程來專門發送郵件 Sendmail send = new Sendmail(user); //啟動線程,線程啟動以後就會履行run辦法來發送郵件 send.start(); //注冊用戶 //new UserService().registerUser(user); request.setAttribute("message", "祝賀您,注冊勝利,我們曾經發了一封帶了注冊信息的電子郵件,請查收,假如沒有收到,能夠是收集緣由,過一會兒就收到了!!"); request.getRequestDispatcher("/message.jsp").forward(request, response); }catch (Exception e) { e.printStackTrace(); request.setAttribute("message", "注冊掉敗!!"); request.getRequestDispatcher("/message.jsp").forward(request, response); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
法式運轉後果以下:
如今許多網站都有如許的功效,用戶注冊完成以後,網站依據我們注冊時填寫的郵箱給我們一封Email,然後點擊Email中的超鏈接去激活我們的用戶。這類功效就是如許完成的。
在總結應用JavaMail發送郵件時發明,將郵件發送到sina或許sohu的郵箱時,紛歧定可以或許立時收獲得到郵件,老是有延遲,有時乃至會延遲很長的時光,乃至會被當做渣滓郵件來處置失落,或許爽性就謝絕吸收,有時刻為了看到郵件發送勝利的後果,要等半天,實屬無法啊。
以上所述是小編給年夜家引見的java mail 發送郵件功效的實例代碼,願望對年夜家有所贊助!