激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - 如何使用JavaMail發(fā)送郵件

如何使用JavaMail發(fā)送郵件

2020-03-07 14:46孤傲蒼狼 JAVA教程

這篇文章主要教大家如何使用JavaMail發(fā)送郵件在web應(yīng)用中,實(shí)現(xiàn)用戶注冊(cè)成功之后,將用戶的注冊(cè)信息以Email的形式發(fā)送到用戶的注冊(cè)郵箱當(dāng)中,感興趣的小伙伴們可以參考一下

現(xiàn)在很多的網(wǎng)站都提供有用戶注冊(cè)功能, 通常我們注冊(cè)成功之后就會(huì)收到一封來(lái)自注冊(cè)網(wǎng)站的郵件。郵件里面的內(nèi)容可能包含了我們的注冊(cè)的用戶名和密碼以及一個(gè)激活賬戶的超鏈接等信息。今天我們也來(lái)實(shí)現(xiàn)一個(gè)這樣的功能,用戶注冊(cè)成功之后,就將用戶的注冊(cè)信息以Email的形式發(fā)送到用戶的注冊(cè)郵箱當(dāng)中,實(shí)現(xiàn)發(fā)送郵件功能就得借助于JavaMail了。

一、搭建開(kāi)發(fā)環(huán)境

1.1、創(chuàng)建Web項(xiàng)目

  如何使用JavaMail發(fā)送郵件

1.2、用戶注冊(cè)的Jsp頁(yè)面

register.jsp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
 <head>
  <title>注冊(cè)頁(yè)面</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="注冊(cè)">
  </form>
 </body>
</html>

1.3、消息提示頁(yè)面
message.jsp

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

二、編寫(xiě)處理用戶注冊(cè)處理程序
2.1、開(kāi)發(fā)封裝用戶注冊(cè)信息的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
25
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、編寫(xiě)郵件發(fā)送功能

  發(fā)送郵件是一件非常耗時(shí)的事情,因此這里設(shè)計(jì)一個(gè)線程類來(lái)發(fā)送郵件

?
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
71
72
73
74
75
76
77
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就是一個(gè)線程類,這個(gè)線程類用于給指定的用戶發(fā)送Email
* @author: 孤傲蒼狼
* @date: 2015-1-12 下午10:43:48
*
*/
public class Sendmail extends Thread {
    //用于給用戶發(fā)送郵件的郵箱
  private String from = "gacl@sohu.com";
    //郵箱的用戶名
  private String username = "gacl";
    //郵箱的密碼
  private String password = "郵箱密碼";
    //發(fā)送郵件的服務(wù)器地址
  private String host = "smtp.sohu.com";
  
  private User user;
  public Sendmail(User user){
    this.user = user;
  }
  
  /* 重寫(xiě)run方法的實(shí)現(xiàn),在run方法中發(fā)送郵件給指定的用戶
   * @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: 創(chuàng)建要發(fā)送的郵件
  * @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("用戶注冊(cè)郵件");
    
    String info = "恭喜您注冊(cè)成功,您的用戶名:" + user.getUsername() + ",您的密碼:" + user.getPassword() + ",請(qǐng)妥善保管,如有問(wèn)題請(qǐng)聯(lián)系網(wǎng)站客服!!";
    message.setContent(info, "text/html;charset=UTF-8");
    message.saveChanges();
    return message;
  }
}

2.3、編寫(xiě)處理用戶注冊(cè)的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
41
42
43
44
45
46
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("把用戶信息注冊(cè)到數(shù)據(jù)庫(kù)中");
      //用戶注冊(cè)成功之后就使用用戶注冊(cè)時(shí)的郵箱給用戶發(fā)送一封Email
      //發(fā)送郵件是一件非常耗時(shí)的事情,因此這里開(kāi)辟了另一個(gè)線程來(lái)專門(mén)發(fā)送郵件
      Sendmail send = new Sendmail(user);
      //啟動(dòng)線程,線程啟動(dòng)之后就會(huì)執(zhí)行run方法來(lái)發(fā)送郵件
      send.start();
      
      //注冊(cè)用戶
      //new UserService().registerUser(user);
      request.setAttribute("message", "恭喜您,注冊(cè)成功,我們已經(jīng)發(fā)了一封帶了注冊(cè)信息的電子郵件,請(qǐng)查收,如果沒(méi)有收到,可能是網(wǎng)絡(luò)原因,過(guò)一會(huì)兒就收到了!!");
      request.getRequestDispatcher("/message.jsp").forward(request, response);
    }catch (Exception e) {
      e.printStackTrace();
      request.setAttribute("message", "注冊(cè)失敗!!");
      request.getRequestDispatcher("/message.jsp").forward(request, response);
    }
  }
 
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    doGet(request, response);
  }
}

程序運(yùn)行效果如下:

如何使用JavaMail發(fā)送郵件

  現(xiàn)在很多網(wǎng)站都有這樣的功能,用戶注冊(cè)完成之后,網(wǎng)站根據(jù)我們注冊(cè)時(shí)填寫(xiě)的郵箱給我們一封Email,然后點(diǎn)擊Email中的超鏈接去激活我們的用戶。這種功能就是這樣實(shí)現(xiàn)的。

  在總結(jié)使用JavaMail發(fā)送郵件時(shí)發(fā)現(xiàn),將郵件發(fā)送到sina或者sohu的郵箱時(shí),不一定能夠馬上收取得到郵件,總是有延遲,有時(shí)甚至?xí)舆t很長(zhǎng)的時(shí)間,甚至?xí)划?dāng)成垃圾郵件來(lái)處理掉,或者干脆就拒絕接收,有時(shí)候?yàn)榱丝吹洁]件發(fā)送成功的效果,要等半天,實(shí)屬無(wú)奈啊。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人综合在线 | 精品国产一区二区三区成人影院 | 一级性生活免费视频 | 欧美成人精品h版在线观看 在线2区 | 日韩精品久久久 | 国产精品久久久久久久久久久久久久久 | 99精品欧美一区二区 | 精品国产一区二区三区成人影院 | 伊人999 | 国产免费久久久久 | 免费的毛片 | 国产69精品福利视频 | 一级毛片免费在线 | 鸳鸯谱在线观看高清 | 亚洲白嫩在线观看 | 国产午夜亚洲精品理论片大丰影院 | 粉嫩粉嫩一区二区三区在线播放 | 少妇一级淫片免费放播放 | 国产成人精品网站 | 斗破苍穹在线观看免费完整观看 | 中文字幕观看 | 欧美色淫 | 日本在线播放一区二区三区 | 青草久久av| 一区二区三区在线视频观看58 | 欧美日韩免费在线观看视频 | 日本不卡视频在线观看 | 久久久久99一区二区三区 | 天堂成人一区二区三区 | 欧美三级欧美成人高清www | 国产亚洲精品久久久久婷婷瑜伽 | 日本黄色免费播放 | 性爱视频在线免费 | 亚洲一区二区不卡视频 | 欧美精品亚洲人成在线观看 | 国产一级淫片在线观看 | 成人一级视频在线观看 | 法国性经典xxxhd | 久久久免费观看完整版 | 男女亲热网站 | 国产毛片毛片 |