Gmail에서 이메일을 읽을 수있는 코드를 작성하고 있습니다. 처음 출시 할 때 새로운 이메일을 읽습니다. 괜찮아. 하지만 두 번째로 시작하면 이전에받은 것과 동일한 이메일을받지 못합니다.자바가 읽지 않은 이메일을받습니다.
예를 들어, 읽지 않은 전자 메일이 3 개있는 경우 처음 시작할 때 3이됩니다.하지만 다시 시작하면 아무 것도 가져 오지 않습니다 (이미 3이 있으므로). 새 이메일이 있고 다시 시작하면 3 번째가 아닌 마지막 메일 만 받게됩니다.
희망 충분합니다.
나는 http://alvinalexander.com/java/javamail-search-unseen-unread-messages-mailbox-pop3package javamailtests;
import java.io.InputStream;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.search.*;
public class JavaMailSearchInbox {
public static void main(String args[]) throws Exception {
// mail server info
String host = "pop.gmail.com";
String user = "USER";
String password = "PASS";
// connect to my pop3 inbox in read-only mode
Properties properties = System.getProperties();
Session session = Session.getDefaultInstance(properties);
Store store = session.getStore("pop3");
store.connect(host, user, password);
Folder inbox = store.getFolder("inbox");
inbox.open(Folder.READ_ONLY);
// search for all "unseen" messages
Flags seen = new Flags(Flags.Flag.SEEN);
FlagTerm unseenFlagTerm = new FlagTerm(seen, false);
Message messages[] = inbox.search(unseenFlagTerm);
if (messages.length == 0) System.out.println("No messages found.");
for (int i = 0; i < messages.length; i++) {
// stop after listing ten messages
if (i > 10) {
System.exit(0);
inbox.close(true);
store.close();
}
System.out.println("Message " + (i + 1));
System.out.println("From : " + messages[i].getFrom()[0]);
System.out.println("Subject : " + messages[i].getSubject());
System.out.println("Sent Date : " + messages[i].getSentDate());
System.out.println();
}
inbox.close(true);
store.close();
}
}
@CarlPalsson 아니요. 클라이언트 옵션입니다. POP3의 필수 기능은 아닙니다. 메시지를 서버에 저장할지 또는 서버에서 삭제할지 여부를 선택할 수 있습니다. 실제로 발생하는 일은 클라이언트가 옵션을 선택하면 메시지를 삭제하는 데 추가로 문제가 발생한다는 것입니다. – EJP
@EJP 설명해 주셔서 고맙습니다. – 8bitcat
해당 호스트에서 Gmail 이메일을 가져 오는 것은 까다로울 수 있습니다. – Behe