JavaMail API - E-postaları Yanıtlama

Bu bölümde JavaMail API kullanarak bir e-postayı nasıl yanıtlayacağımızı göreceğiz. Aşağıdaki programda izlenen temel adımlar şunlardır:

  • Özelliklerde POP ve SMPT sunucu ayrıntılarıyla Session nesnesini alın. Mesajları almak için POP detaylarına ve mesaj göndermek için SMPT detaylarına ihtiyacımız var.

  • POP3 mağaza nesnesi oluşturun ve mağazaya bağlanın.

  • Klasör nesnesi oluşturun ve posta kutunuzdaki uygun klasörü açın.

  • Mesajları alın.

  • Mesajları tekrarlayın ve cevaplamak istiyorsanız "Y" veya "y" yazın.

  • Mesajın tüm bilgilerini (Kime, Kimden, Konu, İçerik) alın.

  • Message.reply () yöntemini kullanarak yanıt mesajını oluşturun. Bu yöntem, uygun alıcı ve konuyla yeni bir İletiyi yapılandırır. Yöntem, yalnızca gönderene mi (yanlış) yoksa tümüne mi (doğru) yanıt verileceğini belirten bir boole parametresi alır.

  • Mesajda Kimden, Metin ve Yanıtla'yı ayarlayın ve bunu Taşıma nesnesi örneği aracılığıyla gönderin.

  • Sırasıyla Taşıma, klasör ve depolama nesnelerini kapatın.

Burada, e-postaların hedef e-posta adresimize gönderildiği JangoSMPT sunucusunu kullandık. Kurulum, Ortam Kurulumu bölümünde açıklanmaktadır .

Java Sınıfı Oluşturun

Bir java sınıf dosyası oluşturun ReplyToEmailiçeriği aşağıdaki gibidir:

package com.tutorialspoint;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Date;
import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class ReplyToEmail {
   public static void main(String args[]) 
   {
      Date date = null;

      Properties properties = new Properties();
      properties.put("mail.store.protocol", "pop3");
      properties.put("mail.pop3s.host", "pop.gmail.com");
      properties.put("mail.pop3s.port", "995");
      properties.put("mail.pop3.starttls.enable", "true");
      properties.put("mail.smtp.auth", "true");
      properties.put("mail.smtp.starttls.enable", "true");
      properties.put("mail.smtp.host", "relay.jangosmtp.net");
      properties.put("mail.smtp.port", "25");
      Session session = Session.getDefaultInstance(properties);

      // session.setDebug(true);
      try 
      {
         // Get a Store object and connect to the current host
         Store store = session.getStore("pop3s");
         store.connect("pop.gmail.com", "[email protected]",
            "*****");//change the user and password accordingly

         Folder folder = store.getFolder("inbox");
         if (!folder.exists()) {
            System.out.println("inbox not found");
               System.exit(0);
         }
         folder.open(Folder.READ_ONLY);

         BufferedReader reader = new BufferedReader(new InputStreamReader(
            System.in));

         Message[] messages = folder.getMessages();
         if (messages.length != 0) {

            for (int i = 0, n = messages.length; i < n; i++) {
               Message message = messages[i];
               date = message.getSentDate();
               // Get all the information from the message
               String from = InternetAddress.toString(message.getFrom());
               if (from != null) {
                  System.out.println("From: " + from);
               }
               String replyTo = InternetAddress.toString(message
	         .getReplyTo());
               if (replyTo != null) {
                  System.out.println("Reply-to: " + replyTo);
               }
               String to = InternetAddress.toString(message
	         .getRecipients(Message.RecipientType.TO));
               if (to != null) {
                  System.out.println("To: " + to);
               }

               String subject = message.getSubject();
               if (subject != null) {
                  System.out.println("Subject: " + subject);
               }
               Date sent = message.getSentDate();
               if (sent != null) {
                  System.out.println("Sent: " + sent);
               }

               System.out.print("Do you want to reply [y/n] : ");
               String ans = reader.readLine();
               if ("Y".equals(ans) || "y".equals(ans)) {

                  Message replyMessage = new MimeMessage(session);
                  replyMessage = (MimeMessage) message.reply(false);
                  replyMessage.setFrom(new InternetAddress(to));
                  replyMessage.setText("Thanks");
                  replyMessage.setReplyTo(message.getReplyTo());

                  // Send the message by authenticating the SMTP server
                  // Create a Transport instance and call the sendMessage
                  Transport t = session.getTransport("smtp");
                  try {
	   	     //connect to the smpt server using transport instance
		     //change the user and password accordingly	
	             t.connect("abc", "****");
	             t.sendMessage(replyMessage,
                        replyMessage.getAllRecipients());
                  } finally {
                     t.close();
                  }
                  System.out.println("message replied successfully ....");

                  // close the store and folder objects
                  folder.close(false);
                  store.close();

               } else if ("n".equals(ans)) {
                  break;
               }
            }//end of for loop

         } else {
            System.out.println("There is no msg....");
         }

      } catch (Exception e) {
         e.printStackTrace();
      }

   }

}
Session.setDebug (true) ifadesinin açıklamasını kaldırarak hata ayıklamayı etkinleştirebilirsiniz ;

Derleyin ve Çalıştırın

Artık sınıfımız hazır olduğuna göre, yukarıdaki sınıfı derleyelim. ReplyToEmail.java sınıfını dizine kaydettim:/home/manisha/JavaMailAPIExercise. Sınıf yolunda javax.mail.jar ve activation.jar kavanozlarına ihtiyacımız olacak . Sınıfı (her iki kavanoz da / home / manisha / dizinine yerleştirilir) komut isteminden derlemek için aşağıdaki komutu yürütün:

javac -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: ReplyToEmail.java

Artık sınıf derlendiğine göre, çalıştırmak için aşağıdaki komutu yürütün:

java -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: ReplyToEmail

Çıkışı Doğrula

Komut konsolunda aşağıdaki mesajı görmelisiniz:

From: ABC <[email protected]>
Reply-to: [email protected]
To: XYZ <[email protected]>
Subject: Hi today is a nice day
Sent: Thu Oct 17 15:58:37 IST 2013
Do you want to reply [y/n] : y
message replied successfully ....

Postanın gönderildiği gelen kutusunu kontrol edin. Bizim durumumuzda alınan mesaj aşağıdaki gibi görünür: