一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - JavaWeb中使用JavaMail實現發送郵件功能實例詳解

JavaWeb中使用JavaMail實現發送郵件功能實例詳解

2020-05-07 12:01孤傲蒼狼 JAVA教程

這篇文章主要介紹了JavaWeb中使用JavaMail實現發送郵件功能的實例代碼,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧

現在很多的網站都提供有用戶注冊功能, 通常我們注冊成功之后就會收到一封來自注冊網站的郵件。郵件里面的內容可能包含了我們的注冊的用戶名和密碼以及一個激活賬戶的超鏈接等信息。今天我們也來實現一個這樣的功能,用戶注冊成功之后,就將用戶的注冊信息以Email的形式發送到用戶的注冊郵箱當中,實現發送郵件功能就得借助于JavaMail了。

一、搭建開發環境

1.1、創建Web項目

JavaWeb中使用JavaMail實現發送郵件功能實例詳解

1.2、用戶注冊的Jsp頁面

register.jsp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ 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

?
1
2
3
4
5
6
7
8
9
10
<%@ page language="java" pageEncoding="UTF-"%>
<!DOCTYPE HTML>
<html>
<head>
<title>消息提示頁面</title>
</head>
<body>
${message}
</body>
</html>

二、編寫處理用戶注冊處理程序

2.1、開發封裝用戶注冊信息的domain

User.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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、編寫郵件發送功能

  發送郵件是一件非常耗時的事情,因此這里設計一個線程類來發送郵件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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", "注冊失?。。?quot;);
request.getRequestDispatcher("/message.jsp").forward(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}

  程序運行效果如下:

JavaWeb中使用JavaMail實現發送郵件功能實例詳解

  現在很多網站都有這樣的功能,用戶注冊完成之后,網站根據我們注冊時填寫的郵箱給我們一封Email,然后點擊Email中的超鏈接去激活我們的用戶。這種功能就是這樣實現的。

  在總結使用JavaMail發送郵件時發現,將郵件發送到sina或者sohu的郵箱時,不一定能夠馬上收取得到郵件,總是有延遲,有時甚至會延遲很長的時間,甚至會被當成垃圾郵件來處理掉,或者干脆就拒絕接收,有時候為了看到郵件發送成功的效果,要等半天,實屬無奈啊。

以上所述是小編給大家介紹的java mail 發送郵件功能的實例代碼,希望對大家有所幫助!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天堂一区二区在线观看 | 日本高清全集免费观看 | 日日操综合 | 茄子视频懂你更多apl | 亚洲欧美天堂综合久久 | 天堂在线免费观看 | 亚洲第一网色综合久久 | 14一18cad中国大学生 | 麻豆夏晴子 | 91短视频版高清在线观看免费 | 国产精品国产香蕉在线观看网 | 日韩精品一区二三区中文 | 国产白白视频在线观看2 | 精品国产福利在线 | 国产一级在线观看视频 | 国产高清视频网站 | 亚洲冬月枫中文字幕在线看 | 嫩草影院地址一地址二 | 午夜勾魂曲 | 亚洲色图首页 | 穆挂英风流艳史小说 | 艾秋麻豆果冻剧传媒在线播放 | 青山葵在线 | youzljzljzljzlj96 | 亚洲六月丁香六月婷婷色伊人 | 国产三级精品91三级在专区 | 国产成人精品999在线 | 午夜第九达达兔鲁鲁 | 99色亚洲 | 欧美人畜| 99久女女精品视频在线观看 | 91亚洲精品国产自在现线 | 欧美三级不卡在线观线看高清 | 日韩无砖专区体验区 | sao虎影院桃红视频在线观看 | 调教处男 | 2019年国产不卡在线刷新 | 奇米视频7777 | 国产精品天天看特色大片不卡 | 91精品国产品国语在线不卡 | 四虎影视永久免费视频观看 |