Servletler - E-posta Gönderme

Servlet'inizi kullanarak bir e-posta göndermek yeterince basittir, ancak başlamak için sahip olmanız gerekir JavaMail API ve Java Activation Framework (JAF) makinenize kurulur.

  • JavaMail'in en son sürümünü (Sürüm 1.2) Java'nın standart web sitesinden indirebilirsiniz .

  • JAF'ın en son sürümünü (Sürüm 1.1.1) Java'nın standart web sitesinden indirebilirsiniz .

Bu dosyaları indirin ve açın, yeni oluşturulan üst düzey dizinlerde her iki uygulama için bir dizi jar dosyası bulacaksınız. Eklemeniz gerekiyormail.jar ve activation.jar CLASSPATH dosyanızdaki dosyalar.

Basit Bir E-posta Gönderin

İşte makinenizden basit bir e-posta göndermenin bir örneği. Burada sizinlocalhostinternete bağlı ve bir e-posta gönderebilecek kadar yetenekli. Aynı zamanda Java E-posta API paketi ve JAF paketindeki tüm jar dosyalarının CLASSPATH'da mevcut olduğundan emin olun.

// File Name SendEmail.java
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendEmail extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // 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
      Properties properties = System.getProperties();
 
      // Setup mail server
      properties.setProperty("mail.smtp.host", host);
 
      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);
      
      // Set response content type
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();

      try {
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);
         
         // 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);
         String title = "Send Email";
         String res = "Sent message successfully....";
         String docType =
            "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
         
         out.println(docType +
            "<html>\n" +
               "<head><title>" + title + "</title></head>\n" +
               "<body bgcolor = \"#f0f0f0\">\n" +
                  "<h1 align = \"center\">" + title + "</h1>\n" +
                  "<p align = \"center\">" + res + "</p>\n" +
               "</body>
            </html>"
         );
      } catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Şimdi yukarıdaki sunucu uygulamasını derleyip web.xml'de aşağıdaki girdileri oluşturalım.

....
 <servlet>
   <servlet-name>SendEmail</servlet-name>
   <servlet-class>SendEmail</servlet-class>
</servlet>
 
<servlet-mapping>
   <servlet-name>SendEmail</servlet-name>
   <url-pattern>/SendEmail</url-pattern>
</servlet-mapping>
....

Şimdi bu sunucu uygulamasını http: // localhost: 8080 / SendEmail URL'sini kullanarak arayın; bu, verilen e-posta kimliği [email protected]'a bir e-posta gönderecek ve aşağıdaki yanıtı görüntüleyecektir -

Send Email

Sent message successfully....

Birden fazla alıcıya bir e-posta göndermek istiyorsanız, birden çok e-posta kimliğini belirtmek için aşağıdaki yöntemler kullanılacaktır -

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

İşte parametrelerin açıklaması -

  • type- Bu TO, CC veya BCC olarak ayarlanacaktır. Burada CC, Carbon Copy'yi ve BCC, Black Carbon Copy'yi temsil eder. Örnek Message.RecipientType.TO

  • addresses- Bu, e-posta kimliği dizisidir. E-posta kimliklerini belirlerken InternetAddress () yöntemini kullanmanız gerekir.

HTML E-posta Gönderin

İşte makinenizden bir HTML e-postası göndermenin bir örneği. Burada sizinlocalhostinternete bağlı ve bir e-posta gönderebilecek kadar yetenekli. Aynı zamanda, Java E-posta API paketi ve JAF paketindeki tüm jar dosyalarının CLASSPATH'da mevcut olduğundan emin olun.

Bu örnek öncekine çok benzer, ancak burada, mesaja HTML içeriğinin dahil edildiğini belirtmek için ikinci argümanı "text / html" olan içeriği ayarlamak için setContent () yöntemini kullanıyoruz.

Bu örneği kullanarak, istediğiniz kadar büyük HTML içeriği gönderebilirsiniz.

// File Name SendEmail.java
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendEmail extends HttpServlet {
    
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // 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
      Properties properties = System.getProperties();
 
      // Setup mail server
      properties.setProperty("mail.smtp.host", host);
 
      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);
      
      // Set response content type
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();

      try {
         
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);
         
         // 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);
         String title = "Send Email";
         String res = "Sent message successfully....";
         String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
         
         out.println(docType +
            "<html>\n" +
               "<head><title>" + title + "</title></head>\n" +
               "<body bgcolor = \"#f0f0f0\">\n" +
                  "<h1 align = \"center\">" + title + "</h1>\n" +
                  "<p align = \"center\">" + res + "</p>\n" +
               "</body>
            </html>"
         );
      } catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Verilen bir e-posta kimliğine HTML mesajı göndermek için yukarıdaki sunucu uygulamasını derleyin ve çalıştırın.

Eki E-postayla Gönder

İşte makinenizden ekli bir e-posta göndermeye bir örnek. Burada sizinlocalhost internete bağlı ve bir e-posta gönderebilecek kadar yetenekli.

// File Name SendEmail.java
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
public class SendEmail extends HttpServlet {

   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // 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
      Properties properties = System.getProperties();
 
      // Setup mail server
      properties.setProperty("mail.smtp.host", host);
 
      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);
      
	  // Set response content type
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();

      try {
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);
 
         // 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 multipar 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";
         String res = "Sent message successfully....";
         String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
         
         out.println(docType +
            "<html>\n" +
               "<head><title>" + title + "</title></head>\n" +
               "<body bgcolor = \"#f0f0f0\">\n" +
                  "<h1 align = \"center\">" + title + "</h1>\n" +
                  "<p align = \"center\">" + res + "</p>\n" +
               "</body>
            </html>"
         );
      } catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Verilen bir e-posta kimliğindeki bir mesajla birlikte bir dosyayı ek olarak göndermek için yukarıdaki sunucu uygulamasını derleyin ve çalıştırın.

Kullanıcı Kimlik Doğrulama Bölümü

Kimlik doğrulama amacıyla e-posta sunucusuna kullanıcı kimliği ve Parola sağlamanız gerekiyorsa, bu özellikleri aşağıdaki gibi ayarlayabilirsiniz -

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

E-posta gönderme mekanizmasının geri kalanı yukarıda açıklandığı gibi kalacaktır.