Gửi Email trong Java Servlet – itphutran.com

Trong ví dụ này chúng ta sẽ thấy làm thế nào để gửi một email trong ứng dụng Java Servlet. Tôi sẽ sử dụng JavaMail API cung cấp tất cả các lớp cần thiết cho việc gửi email. JavaMail API gói gọn hai gói quan trọng javax.mailjavax.mail.internet . Các gói này cung cấp các lớp học có thể được dùng để gửi và nhận các email đơn giản. Bạn chỉ cần một kết nối Internet để gửi email bằng ứng dụng đơn giản này.

Sau đây là tên các file được tạo ra:

  • Index.html sẽ nhận được đầu vào từ người dùng
  • Tệp tin servlet của MailApp.java sẽ kiểm soát yêu cầu và phản hồi. Nó sẽ gọi send () của SendMail lớp mà chúng tôi đã tạo ra để gửi thư.
  • SendMail.java , một lớp java chứa phương thức gửi thư.

Index.html

<form action="mail" method="post">
  To:<input type="text" name="to"  /><br/>
  Subject:<input type="text" name="subject"  /><br/>
  Message:<input type="text" name="message"  /><br/>
  Your Email id:<input type="text" name="user" ><br/>
  Password<;input type="password" name="pass"   /><br/>
  <input type="submit" value="send" />
</form>

MailApp.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class MailApp extends HttpServlet {
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        String to = request.getParameter("to");
        String subject = request.getParameter("subject");
        String message =  request.getParameter("message");
        String user = request.getParameter("user");
        String pass = request.getParameter("pass");
        SendMail.send(to,subject, message, user, pass);
        out.println("Mail send successfully");
    }   
}

SendMail.java

import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class SendMail 
{ 
    public static void send(String to, String sub, 
                         String msg, final String user,final String pass)
    { 
     //create an instance of Properties Class   
     Properties props = new Properties();
     
     /* Specifies the IP address of your default mail server
     	   for e.g if you are using gmail server as an email sever
           you will pass smtp.gmail.com as value of mail.smtp host. 
           As shown here in the code. 
           Change accordingly, if your email id is not a gmail id
        */
     props.put("mail.smtp.host", "smtp.gmail.com");
     //below mentioned mail.smtp.port is optional
     props.put("mail.smtp.port", "587");		
     props.put("mail.smtp.auth", "true");
     props.put("mail.smtp.starttls.enable", "true");
     
     /* Pass Properties object(props) and Authenticator object   
           for authentication to Session instance 
        */

    Session session = Session.getInstance(props,new javax.mail.Authenticator()
    {
  	  protected PasswordAuthentication getPasswordAuthentication() 
  	  {
  	 	 return new PasswordAuthentication(user,pass);
  	  }
   });
    
   try
   {
 
 	/* Create an instance of MimeMessage, 
 	      it accept MIME types and headers 
 	   */
 
    MimeMessage message = new MimeMessage(session);
       message.setFrom(new InternetAddress(user));
       message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
       message.setSubject(sub);
       message.setText(msg);

       /* Transport class is used to deliver the message to the recipients */
       
       Transport.send(message);
 
 
    }
    catch(Exception e)
    {
    	 e.printStackTrace();
    }
  }  
}

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    
    <servlet>
        <servlet-name>mail</servlet-name>
        <servlet-class>MailApp</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>mail</servlet-name>
        <url-pattern>/mail</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    
</web-app>

Trong ví dụ này lớp SendMail là lớp chính, vì nó sẽ thiết lập một kết nối với Email Server, nó sẽ xác thực tên người dùng và mật khẩu và sau đó sẽ sử dụng thông tin nhập vào trong mẫu như, địa chỉ email của người nhận, văn bản email ..vv,  và sẽ gửi email.

MailApp là servlet ti trong đó mẫu trang HTML sẽ gửi các đầu vào, Servlet này sẽ lấy tất cả các tham số và gọi phương thức send () của lớp SendMail Java.