我正在編寫一個從gmail讀取電子郵件的代碼。所以我第一次啓動時,它會讀取新的電子郵件。沒關係。但是,當我第二次啓動它時,我想要的是它沒有收到它之前得到的同樣的電子郵件。Java獲取未讀電子郵件
例如,如果有3個未讀電子郵件,當我第一次啓動時,它會得到3個。但當我再次啓動時,它什麼也沒有(因爲它已經有3個)。如果有新的電子郵件,我再次啓動它,它應該只獲得最後一個,而不是第一個。
希望我很清楚。
我使用http://alvinalexander.com/java/javamail-search-unseen-unread-messages-mailbox-pop3
package 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 Ahhh謝謝澄清! – 8bitcat
從該主機檢索gmail電子郵件將變得棘手 – Behe