当前位置:  开发笔记 > 编程语言 > 正文

使用IMAP从GMail获取邮件到Java应用程序

如何解决《使用IMAP从GMail获取邮件到Java应用程序》经验,为你挑选了3个好方法。

我想使用JavaMail和IMAP从Java应用程序访问GMail中的消息.为什么我得到SocketTimeoutException

这是我的代码:

Properties props = System.getProperties();
props.setProperty("mail.imap.host", "imap.gmail.com");
props.setProperty("mail.imap.port", "993");
props.setProperty("mail.imap.connectiontimeout", "5000");
props.setProperty("mail.imap.timeout", "5000");

try {
    Session session = Session.getDefaultInstance(props, new MyAuthenticator());
    URLName urlName = new URLName("imap://MYUSERNAME@gmail.com:MYPASSWORD@imap.gmail.com");
    Store store = session.getStore(urlName);
    if (!store.isConnected()) {
        store.connect();
    }
} catch (NoSuchProviderException e) {
    e.printStackTrace();
    System.exit(1);
} catch (MessagingException e) {
    e.printStackTrace();
    System.exit(2);
}

我设置了超时值,以便不会"永远"超时.此外,MyAuthenticator还具有用户名和密码,这似乎是URL的冗余.还有其他方法来指定协议吗?(我没有在IMD的JavaDoc中看到它.)



1> Dave..:

使用imaps是一个很好的建议.提供的答案都没有为我工作,所以我搜索了一些,发现了一些有用的东西.这是我的代码现在的样子.

Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
try {
  Session session = Session.getDefaultInstance(props, null);
  Store store = session.getStore("imaps");
  store.connect("imap.gmail.com", "@gmail.com", "");
  ...
} catch (NoSuchProviderException e) {
  e.printStackTrace();
  System.exit(1);
} catch (MessagingException e) {
  e.printStackTrace();
  System.exit(2);
}

这很好,因为它使冗余的Authenticator脱离了图片.我很高兴这很有效,因为SSLNOTES.txt令我头晕目眩.



2> WhyNotHugo..:

您需要为imaps使用以下属性:

props.setProperty("mail.imaps.host", "imap.gmail.com");
props.setProperty("mail.imaps.port", "993");
props.setProperty("mail.imaps.connectiontimeout", "5000");
props.setProperty("mail.imaps.timeout", "5000");

注意它是"imaps",而不是"imap",因为您使用的协议是imaps(IMAP + SSL)



3> Chris Jester..:

在JavaMail中,您可以使用imapsURL方案来使用基于SSL的IMAP.(有关SSLNOTES.txt更多详细信息,请参阅JavaMail发行版.)例如,imaps://username%40gmail.com@imap.gmail.com/INBOX.

同样,用于smtps通过Gmail发送电子邮件.例如,smtps://username%40gmail.com@smtp.gmail.com/.再次阅读SSLNOTES.txt更多详细信息.希望能帮助到你!

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有