我正在寻找一个帮助我使用IMAP的Java库,最好是IDLE。
我需要编写一个使用SSL通知并检索新电子邮件的Java应用程序。该应用程序将检查由hMailServer托管的帐户的收件箱。
到目前为止,我已经看过了:
Apache Commons Imap但它似乎没有实现IDLE。
JavaPushMail但是没有足够的文件证明(我可能会解决这个问题,但我不确定我的继任者会如此高兴)。
Javamail,他们的IMAPFolder似乎是一个不错的选择,但我的时间很短,为它编写一个稳定的库需要时间。
Chilkatsoft是一个199美元的库,它有点贵(我知道,免费且可靠的代码总是很容易获得:)另外,我不确定它是否处理IDLE。
如果记录并且稳定,我可以找一个轮询收件箱的解决方案。
我很欣赏一些示例代码,一个库或正确方向的推动。
对所有“我”表示抱歉,并提前致谢。
答案 0 :(得分:2)
除了Javamail之外,我还没有使用你提到的任何库,但我可以保证它。我必须编写一个应用程序来轮询交换服务器并解析收件箱中的所有新邮件。这是该项目中使用的代码的snippit。我在应用程序中进行了所有轮询,因此我没有查看来自服务器或其他任何内容的推送通知。我知道这并不是你所要求的,但我希望这是朝着正确方向迈出的一步。
import java.util.Properties;
import javax.mail.*
import javax.mail.search.FlagTerm;
public class Driver {
public static void main(String[] args){
// Create properties (disable security checks on server)
Properties props = new Properties();
props.put("mail.imaps.ssl.checkserveridentity", "false");
props.put("mail.imaps.ssl.trust", "*");
// Get session
Session session = Session.getDefaultInstance(props, null);
try{
// Get the store
Store store = session.getStore("imaps");
store.connect("servername", "username", "password");
//connection configuration
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
//get all unread messages in the inbox
FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
Message[] messages = folder.search(ft);
for (int i = messages.length -1; i>=0; i--) {
messages[i].setFlag(Flags.Flag.SEEN, true);
}
// Close connection
folder.close(false);
store.close();
}
catch(Exception e){
}
}
}
答案 1 :(得分:2)
我继续使用Javamail。只是觉得奇怪的是还没有为它编写好的包装器/客户端。好吧,不能拥有一切。谢谢你的回答,康纳谢尔曼。
答案 2 :(得分:-1)
我自己没有使用它,但这个库看起来不错:
https://github.com/MailCore/mailcore2
MailCore 2提供了一个简单的异步API来处理电子邮件协议IMAP,POP和SMTP。 API已经从头开始重新设计。