首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用IMAP将邮件从GMail导入Java应用程序

使用IMAP将邮件从GMail导入Java应用程序
EN

Stack Overflow用户
提问于 2008-09-14 07:11:32
回答 8查看 104.9K关注 0票数 76

我想使用JavaMailIMAP从Java应用程序访问Gmail中的消息。为什么我会得到一个?

下面是我的代码:

代码语言:javascript
复制
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似乎是多余的。有没有其他方法来指定协议?(我没有在IMAP的JavaDoc中看到它。)

EN

回答 8

Stack Overflow用户

发布于 2008-09-14 17:08:14

使用imaps是一个很好的建议。提供的两个答案对我都不起作用,所以我又搜索了一些,找到了一些有效的答案。下面是我的代码现在的样子。

代码语言:javascript
复制
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", "<username>@gmail.com", "<password>");
  ...
} catch (NoSuchProviderException e) {
  e.printStackTrace();
  System.exit(1);
} catch (MessagingException e) {
  e.printStackTrace();
  System.exit(2);
}

这很好,因为它把多余的Authenticator去掉了。我很高兴这个方法成功了,因为SSLNOTES.txt让我头晕目眩。

票数 71
EN

Stack Overflow用户

发布于 2012-03-27 18:50:59

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

代码语言:javascript
复制
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)

票数 8
EN

Stack Overflow用户

发布于 2008-09-14 07:30:37

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

同样,使用smtps通过Gmail发送电子邮件。例如smtps://username%40gmail.com@smtp.gmail.com/。同样,请阅读SSLNOTES.txt以了解更多详细信息。希望它能帮上忙!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档