大家早上好,
我正在使用GWT框架为我的公司开发ERP,我会得到 使用Java Mail API的未读电子邮件数。 我可以这样做,但问题是我存储了SHA-512哈希密码 数据库,我不会将清除密码传递给Java Mail API,而只是传递密码以避免在网络上传输清除密码。
我使用此代码获取未读邮件的数量:
private static int getNumberOfUnreadMails() {
int numberOfUnreadMails = 0;
Properties properties = new Properties();
properties.put("mail.imap.host", "myserver.com");
properties.put("mail.imap.user", "developper@myserver.com");
properties.put("mail.imap.socketFactory", 143);
properties.put("mail.imap.socketFactory.class", "java.net.ssl.SSLSocketFactory");
properties.put("mail.imap.port", 143);
Session session = Session.getDefaultInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("developper@myserver.com", "mypassword");
}
});
Store store;
try {
store = session.getStore("imap");
store.connect();
Folder folder = store.getFolder("Inbox");
numberOfUnreadMails = folder.getUnreadMessageCount();
} catch (Exception e) {
e.printStackTrace();
}
return numberOfUnreadMails;
}
我也可以使用另一种哈希算法。 如果你知道我的问题的解决方案,请事先知道。
P.S。:对不起,我的英语很差,我是法国人。
答案 0 :(得分:0)
您的IMAP服务器需要未使用的密码才能进行身份验证。您可能已经在使用SSL(因为设置了mail.imap.socketFactory.class
),因此您的密码永远不会以明文形式发送。
imaps
协议(并使用mail.imaps.*
,而不是使用imap协议并指定SSL套接字工厂作为套接字工厂通常,带有SSL端口的IMAP是993,而不是143。