我想使用外部 java 代码从收件箱中获取邮件并阅读消息。 我能够在 javamail api 的帮助下使用外部 java 代码连接到 Gmail 并获取和阅读邮件。 现在我也尝试对 IBM Domino Lotus 做同样的事情。
我正在使用以下代码...
String host = "<Host name>";
String username = "<User Name>";
String password = "<password>";
Properties properties = new Properties();
properties.setProperty("mail.store.protocol", "imap");
properties.setProperty("mail.imap.host", host);
properties.setProperty("mail.imap.port", "143");
try {
Session emailSession = Session.getInstance(properties);
Store emailStore = emailSession.getStore("imap");
emailStore.connect(host, username, password);
//Getting Inbox folder
Folder emailFolder = emailStore.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
Message[] messages =emailFolder.getMessages();
System.out.println("No Of Mails : "+messages.length);
//closing
emailFolder.close(false);
emailStore.close();
}
catch(NoSuchProviderException nspe) {
System.out.println(nspe.getMessage());
System.out.println(me.toString());
nspe.printStackTrace();
}
catch(MessagingException me){
System.out.println(me.getMessage());
System.out.println(me.toString());
me.printStackTrace();
}
catch(Exception e) {
System.out.println(e.getMessage());
System.out.println(me.toString());
e.printStackTrace();
}
行 emailStore.connect(主机,用户名,密码); 抛出以下异常:
javax.mail.MessagingException: <Host name>;
nested exception is:
java.net.UnknownHostException: <Host name>
javax.mail.MessagingException: <Host name>;
nested exception is:
java.net.UnknownHostException: <Host name>
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:611)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at package1.MyClass.main(MyClass.java:40)
Caused by: java.net.UnknownHostException: <Host name>
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:267)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
at com.sun.mail.iap.Protocol.<init>(Protocol.java:107)
at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:103)
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:578)
... 3 more
我尝试将端口号更改为 993,并尝试将 ssl.enable 属性设置为 true。 但我一次又一次地遇到同样的异常。
我还检查了服务器设置。那里启用了 IMAP。
此代码类似于我用来成功连接到 Gmail 并获取邮件的代码。 这就是为什么我不确定这是否也是连接到 IBM Domino Lotus 的正确方法。
只有当您的 Domino 管理员启动“imap”任务并允许您的用户使用 IMAP(将邮件数据库转换为支持 imap)时,这才可能实现。
仅在服务器文档中启用端口来在 Domino 服务器上启用 imap 是不够的。
如果没有服务器端的这种设置,您需要完全不同的类和完全不同的方法来解决您的问题。