【发布时间】:2018-07-12 11:15:11
【问题描述】:
如何使用 JavaMail 获取一定范围内的新邮件?例如:服务器每 2 秒检查一次 Gmail 中是否有新电子邮件。
我可以完成获取电子邮件的整个过程,我只需要它。每次收到新电子邮件时,系统都会为您提供刷新。
原因:我正在制作通知屏幕,每当有新电子邮件到达时,我都需要显示此屏幕。
谢谢。
我的代码:
public void lerEmail() {
try {
campolog.setContentType("text/html");
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance(props);
Store store = session.getStore("imaps");
store.connect("pop.gmail.com", "email@gmail.com", "senha");
// javax.mail.Folder[] folders = store.getDefaultFolder().list("*");
// for (javax.mail.Folder folder : folders) {
// if ((folder.getType() & javax.mail.Folder.HOLDS_MESSAGES) != 0) {
// System.out.println(folder.getFullName() + ": " + folder.getMessageCount());
// }
// }
SortTerm[] termos = new SortTerm[1];
termos[0] = SortTerm.ARRIVAL;
Folder pastaEmail = store.getFolder("SMS");
pastaEmail.open(Folder.READ_ONLY);
Message[] mensagens = pastaEmail.getMessages();
//System.out.println("Total de E-mails: " + mensagens.length);
if (mensagens.length > 0) {
int ultimaMensagem = mensagens.length - 1;
campolog.setText("Mensagem: " + mensagens[ultimaMensagem].getContent().toString());
extrair();
} else {
System.out.println("Não há E-mails.");
}
pastaEmail.close(false);
store.close();
} catch (NoSuchProviderException e) {
System.out.println("Erro: " + e);
} catch (MessagingException | IOException e) {
System.out.println("Erro: " + e);
}
}
【问题讨论】:
-
错误,在循环中?睡觉?但不是每 2 秒一次,请使用更合理的间隔,以分钟为单位。
-
哈哈哈,2秒只是个例子。在我的应用程序中,我将使用 5 分钟。我只是不能把它应用到练习中...... - 对不起我的英语
标签: java synchronization