use*_*481 4 java pop3 smtp jakarta-mail
我正在尝试使用POP3协议收听新消息.我知道Pop3在文件夹打开时不允许新邮件出现在收件箱中.以下是我实施的代码:
import javax.mail.event.MessageCountAdapter;
import javax.mail.event.MessageCountEvent;
public class EmailListener extends MessageCountAdapter {
public EmailListener() {
}
public void messagesAdded(MessageCountEvent e) {
System.out.println("I");
}
public void messagesRemoved(MessageCountEvent e) {
System.out.println("J");
}
}
public class POPReceiver {
public POPReceiver() {
}
public void listen() throws Exception {
Properties properties = new Properties();
Session session = null;
POP3Store pop3Store = null;
String host = "NB-EX101.example.com";
String user = "user2";
properties.put(mail.pop3.host, host);
session = Session.getDefaultInstance(properties);
pop3Store = (POP3Store) session.getStore("pop3");
pop3Store.connect(user, "password");
Folder folder = pop3Store.getFolder("INBOX");
folder.addMessageCountListener(new EmailListener());
sendEmail();
}
public void sendEmail() {
// not added code, but the email sends
}
}
public static void main(String[] args) throws Exception {
POPReceiver i = new POPReceiver();
i.listen();
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Microsoft Exchange Server.任何想法为什么不听?
我查看了http://www.coderanch.com/t/597347/java/java/Email-Listener,但仍然没有听.
来自Javamail FAQ(http://www.oracle.com/technetwork/java/javamail/faq/index.html):
问:我设置了一个MessageCountListener(如监控程序中所示)但我从未收到POP3 INBOX中新邮件的通知.
答:当INBOX打开时,POP3协议不允许客户端看到传递给INBOX的新消息.应用程序必须关闭INBOX并重新打开它才能看到任何新消息.使用MessageCountListenerPOP3界面永远不会收到有关新邮件的通知.有关com.sun.mail.pop3更多信息,请参阅包文档.
因此,MessageCountListener不适用于POP3.您需要实现轮询以获取有关POP3的新消息的信息.
但是,您可以尝试使用IMAP.
但即使在IMAP的情况下,你也应该以另一种方式使用它.请参阅类中的idle()方法IMAPStore(例如,在单独的线程中循环调用等 - 请参阅https://javamail.java.net/nonav/docs/api/com/sun/mail/imap/IMAPStore.html#idle()) .
| 归档时间: |
|
| 查看次数: |
5674 次 |
| 最近记录: |