JSP - Mengirim Email

Pada bab ini, kita akan membahas cara mengirim email menggunakan JSP. Untuk mengirim email menggunakan JSP, Anda harus memilikiJavaMail API dan Java Activation Framework (JAF) dipasang di mesin Anda.

  • Anda dapat mengunduh JavaMail versi terbaru (Versi 1.2) dari situs web standar Java.

  • Anda dapat mengunduh JavaBeans Activation Framework JAF (Versi 1.0.2) versi terbaru dari situs web standar Java.

Unduh dan unzip file ini, di direktori level atas yang baru dibuat. Anda akan menemukan sejumlah file jar untuk kedua aplikasi tersebut. Anda perlu menambahkanmail.jar dan activation.jar file di CLASSPATH Anda.

Kirim Email Sederhana

Berikut adalah contoh untuk mengirim email sederhana dari mesin Anda. Diasumsikan bahwa filelocalhostterhubung ke Internet dan cukup mampu untuk mengirim email. Pastikan semua file jar dari paket Java Email API dan paket JAF tersedia di CLASSPATH.

<%@ page import = "java.io.*,java.util.*,javax.mail.*"%>
<%@ page import = "javax.mail.internet.*,javax.activation.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>

<%
   String result;
   
   // Recipient's email ID needs to be mentioned.
   String to = "[email protected]";

   // Sender's email ID needs to be mentioned
   String from = "[email protected]";

   // Assuming you are sending email from localhost
   String host = "localhost";

   // Get system properties object
   Properties properties = System.getProperties();

   // Setup mail server
   properties.setProperty("mail.smtp.host", host);

   // Get the default Session object.
   Session mailSession = Session.getDefaultInstance(properties);

   try {
      // Create a default MimeMessage object.
      MimeMessage message = new MimeMessage(mailSession);
      
      // Set From: header field of the header.
      message.setFrom(new InternetAddress(from));
      
      // Set To: header field of the header.
      message.addRecipient(Message.RecipientType.TO,
                               new InternetAddress(to));
      // Set Subject: header field
      message.setSubject("This is the Subject Line!");
      
      // Now set the actual message
      message.setText("This is actual message");
      
      // Send message
      Transport.send(message);
      result = "Sent message successfully....";
   } catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>

<html>
   <head>
      <title>Send Email using JSP</title>
   </head>
   
   <body>
      <center>
         <h1>Send Email using JSP</h1>
      </center>
      
      <p align = "center">
         <% 
            out.println("Result: " + result + "\n");
         %>
      </p>
   </body>
</html>

Sekarang mari kita masukkan kode di atas SendEmail.jsp mengajukan dan memanggil JSP ini menggunakan URL http://localhost:8080/SendEmail.jsp. Ini akan membantu mengirim email ke ID email yang diberikan[email protected]. Anda akan menerima tanggapan berikut -

Send Email using JSP

Result: Sent message successfully....

Jika Anda ingin mengirim email ke beberapa penerima, gunakan metode berikut untuk menentukan beberapa ID email -

void addRecipients(Message.RecipientType type, Address[] addresses)
throws MessagingException

Berikut adalah deskripsi parameter -

  • type- Ini akan disetel ke TO, CC atau BCC. Di sini CC mewakili Salinan Karbon dan BCC mewakili Salinan Karbon Hitam. Contoh Message.RecipientType.TO

  • addresses- Ini adalah deretan ID email. Anda perlu menggunakan metode InternetAddress () saat menentukan ID email

Kirim Email HTML

Berikut adalah contoh untuk mengirim email HTML dari mesin Anda. Diasumsikan bahwa filelocalhostterhubung ke Internet dan cukup mampu untuk mengirim email. Pastikan semua file jar dariJava Email API package dan JAF package tersedia di CLASSPATH.

Contoh ini sangat mirip dengan yang sebelumnya, kecuali bahwa di sini kita menggunakan setContent() metode untuk mengatur konten yang argumen keduanya "text/html" untuk menentukan bahwa konten HTML disertakan dalam pesan.

Dengan menggunakan contoh ini, Anda dapat mengirim konten HTML sebesar yang Anda butuhkan.

<%@ page import = "java.io.*,java.util.*,javax.mail.*"%>
<%@ page import = "javax.mail.internet.*,javax.activation.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>

<%
   String result;
   
   // Recipient's email ID needs to be mentioned.
   String to = "[email protected]";

   // Sender's email ID needs to be mentioned
   String from = "[email protected]";

   // Assuming you are sending email from localhost
   String host = "localhost";

   // Get system properties object
   Properties properties = System.getProperties();

   // Setup mail server
   properties.setProperty("mail.smtp.host", host);

   // Get the default Session object.
   Session mailSession = Session.getDefaultInstance(properties);

   try {
      // Create a default MimeMessage object.
      MimeMessage message = new MimeMessage(mailSession);
      
      // Set From: header field of the header.
      message.setFrom(new InternetAddress(from));
      
      // Set To: header field of the header.
      message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
      
      // Set Subject: header field
      message.setSubject("This is the Subject Line!");
     
      // Send the actual HTML message, as big as you like
      message.setContent("<h1>This is actual message</h1>", "text/html" );
      
      // Send message
      Transport.send(message);
      result = "Sent message successfully....";
   } catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>

<html>
   <head>
      <title>Send HTML Email using JSP</title>
   </head>

   <body>
      <center>
         <h1>Send Email using JSP</h1>
      </center>
      
      <p align = "center">
         <% 
            out.println("Result: " + result + "\n");
         %>
      </p>
   </body>
</html>

Sekarang mari kita gunakan JSP di atas untuk mengirim pesan HTML pada ID email tertentu.

Kirim Lampiran di Email

Berikut adalah contoh untuk mengirim email dengan lampiran dari mesin Anda -

<%@ page import = "java.io.*,java.util.*,javax.mail.*"%>
<%@ page import = "javax.mail.internet.*,javax.activation.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>

<%
   String result;
   
   // Recipient's email ID needs to be mentioned.
   String to = "[email protected]";

   // Sender's email ID needs to be mentioned
   String from = "[email protected]";

   // Assuming you are sending email from localhost
   String host = "localhost";

   // Get system properties object
   Properties properties = System.getProperties();

   // Setup mail server
   properties.setProperty("mail.smtp.host", host);

   // Get the default Session object.
   Session mailSession = Session.getDefaultInstance(properties);

   try {
      // Create a default MimeMessage object.
      MimeMessage message = new MimeMessage(mailSession);

      // Set From: header field of the header.
      message.setFrom(new InternetAddress(from));

      // Set To: header field of the header.
      message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

      // Set Subject: header field
      message.setSubject("This is the Subject Line!");

      // Create the message part 
      BodyPart messageBodyPart = new MimeBodyPart();

      // Fill the message
      messageBodyPart.setText("This is message body");
      
      // Create a multipart message
      Multipart multipart = new MimeMultipart();

      // Set text message part
      multipart.addBodyPart(messageBodyPart);

      // Part two is attachment
      messageBodyPart = new MimeBodyPart();
      
      String filename = "file.txt";
      DataSource source = new FileDataSource(filename);
      messageBodyPart.setDataHandler(new DataHandler(source));
      messageBodyPart.setFileName(filename);
      multipart.addBodyPart(messageBodyPart);

      // Send the complete message parts
      message.setContent(multipart );

      // Send message
      Transport.send(message);
      String title = "Send Email";
      result = "Sent message successfully....";
   } catch (MessagingException mex) {
      mex.printStackTrace();
      result = "Error: unable to send message....";
   }
%>

<html>
   <head>
      <title>Send Attachment Email using JSP</title>
   </head>
   
   <body>
      <center>
         <h1>Send Attachment Email using JSP</h1>
      </center>
      
      <p align = "center">
         <%out.println("Result: " + result + "\n");%>
      </p>
   </body>
</html>

Sekarang mari kita jalankan JSP di atas untuk mengirim file sebagai lampiran bersama dengan pesan pada ID email yang diberikan.

Bagian Otentikasi Pengguna

Jika diminta untuk memberikan ID pengguna dan Kata Sandi ke server email untuk tujuan otentikasi, maka Anda dapat mengatur properti ini sebagai berikut -

props.setProperty("mail.user", "myuser");
props.setProperty("mail.password", "mypwd");

Mekanisme pengiriman email lainnya akan tetap seperti yang dijelaskan di atas.

Menggunakan Formulir untuk Mengirim Email

Anda dapat menggunakan formulir HTML untuk menerima parameter email dan kemudian Anda dapat menggunakan request keberatan untuk mendapatkan semua informasi sebagai berikut -

String to = request.getParameter("to");
String from = request.getParameter("from");
String subject = request.getParameter("subject");
String messageText = request.getParameter("body");

Setelah Anda memiliki semua informasi, Anda dapat menggunakan program yang disebutkan di atas untuk mengirim email.