我们需要为不支持 IMAP 的 Hotmail 构建一个客户端。据我了解,您必须使用带有 POP3 的交换,但 POP3 不支持将邮件从一个文件夹移动到另一个文件夹。我们需要以下功能:
- 能够阅读邮件而不将其标记为“已读”
- 可以删除邮件
- 能够将邮件从收件箱移到另一个文件夹并标记为已读
有什么办法可以让它工作吗?
我们需要为不支持 IMAP 的 Hotmail 构建一个客户端。据我了解,您必须使用带有 POP3 的交换,但 POP3 不支持将邮件从一个文件夹移动到另一个文件夹。我们需要以下功能:
有什么办法可以让它工作吗?
简短的回答,不。
从 Microsoft 获得 ActiveSync 协议的许可。
Hotmail 有一个 Outlook 连接器。也许有大量的 JNI,但首先检查许可证。
更新:Outlook 现在支持 IMAP。Hotmail 使用相同的服务器。
您可以使用 JavaMail 做所有您需要的事情。这是API
这是一个从收件箱中获取所有未读邮件并将其标记为已读的示例。查看文件夹类(特别是copyMessages()
方法)将消息移动到新文件夹。
import java.util.Properties;
import javax.mail.*;
import javax.mail.search.FlagTerm;
public class Driver {
public static void main(String[] args){
// Create properties (disable security checks on server)
Properties props = new Properties();
// Get session
Session session = Session.getDefaultInstance(props, null);
try{
// Get the store
Store store = session.getStore("pop3");
store.connect("servername", "username", "password");
//connection configuration
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
//get all unread messages in the inbox
FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), true);
Message[] messages = folder.search(ft);
for (int i = messages.length -1; i>=0; i--) {
messages[i].setFlag(Flags.Flag.SEEN, true);
}
// Close connection
folder.close(false);
store.close();
}
catch(Exception e){
e.printStackTrace();
}
}