如何使用JavaMail在Android中获取新邮件通知?

时间:2016-02-26 10:31:09

标签: android javamail

我正在尝试使用JavaMail(在Android应用中)获取新邮件通知。我正在使用IdleManager来完成这项工作,它给出了一个例外:

  

文件夹未使用SocketChannels

2 个答案:

答案 0 :(得分:1)

您是否阅读了IdleManager javadocs

  

由于Java SE nio支持的限制,必须使用SocketChannel而不是Socket连接到服务器。但是,SocketChannels不支持套接字的所有功能,例如通过SOCKS代理服务器连接。 SocketChannels也不支持同时读写,这意味着如果使用SocketChannels则不能使用idle方法;请改用此IdleManager。要启用对SocketChannel而不是套接字的支持,请在用于访问IMAP文件夹的会话中设置mail.imap.usesocketchannels属性。 (或mail.imaps.usesocketchannels如果您正在使用“imaps”协议。)这将影响该Session中的所有连接,但如果您需要使用与SocketChannels不兼容的功能,则可以创建另一个没有此属性集的Session 。

答案 1 :(得分:-1)

我在Android上遇到同样的问题,即使使用导致JavaMail使用mail.imaps.usesocketchannels的{​​{1}},IdleManager也会通过调用SocketChannel.open()来测试正确使用,这是硬编码返回null

Socket.getChannel()