JavaMail API-회신 이메일
이 장에서는 JavaMail API를 사용하여 이메일에 답장하는 방법을 살펴 봅니다. 아래 프로그램에서 따르는 기본 단계는 다음과 같습니다.
속성에서 POP 및 SMPT 서버 세부 정보가있는 세션 개체를 가져옵니다. 메시지를 검색하려면 POP 세부 정보가 필요하고 메시지를 보내려면 SMPT 세부 정보가 필요합니다.
POP3 저장소 개체를 만들고 저장소에 연결합니다.
폴더 개체를 만들고 사서함에서 적절한 폴더를 엽니 다.
메시지를 검색합니다.
메시지를 반복하고 회신하려면 "Y"또는 "y"를 입력합니다.
메시지의 모든 정보 (To, From, Subject, Content)를 가져옵니다.
Message.reply () 메서드를 사용하여 응답 메시지를 작성합니다. 이 방법은 적절한 수신자와 제목으로 새 메시지를 구성합니다. 이 메서드는 보낸 사람에게만 응답할지 (false) 아니면 모두에게 응답할지 (true)를 나타내는 부울 매개 변수를 사용합니다.
메시지에서 From, Text 및 Reply-to를 설정하고 Transport 개체의 인스턴스를 통해 보냅니다.
전송, 폴더 및 저장소 개체를 각각 닫습니다.
여기서는 이메일이 목적지 이메일 주소로 전송되는 JangoSMPT 서버를 사용했습니다. 설정은 환경 설정 장 에서 설명합니다 .
자바 클래스 생성
자바 클래스 파일 만들기 ReplyToEmail, 그 내용은 다음과 같습니다.
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); 문을 주석 해제하여 디버그를 설정할 수 있습니다 .
컴파일 및 실행
이제 클래스가 준비되었으므로 위 클래스를 컴파일 해 보겠습니다. ReplyToEmail.java 클래스를 디렉토리에 저장했습니다./home/manisha/JavaMailAPIExercise. 클래스 경로에 jars javax.mail.jar 및 activation.jar 이 필요합니다 . 아래 명령을 실행하여 명령 프롬프트에서 클래스를 컴파일하십시오 (두 jar 모두 / home / manisha / 디렉토리에 있음).
javac -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: ReplyToEmail.java
이제 클래스가 컴파일되었으므로 다음 명령을 실행하여 실행하십시오.
java -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: ReplyToEmail
출력 확인
명령 콘솔에 다음 메시지가 표시되어야합니다.
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 ....
메일이 전송 된받은 편지함을 확인하십시오. 우리의 경우 수신 된 메시지는 다음과 같습니다.