连接到imap服务器并处理根文件夹的内容

时间:2018-12-16 13:43:26

标签: java email javamail imap

我正在使用以下Java示例代码连接到imap服务器:

void emailtest(String user, String pass, String server, String port, String folder, String timeout) {
    Properties props = new Properties();
    props.put("mail.store.protocol", "imap");
    props.put("mail.imap.host", server);
    props.put("mail.imap.port", port);
    props.put("mail.imap.ssl.enable", "true");

    Session session = Session.getInstance(props, null);
    try (Store store = session.getStore("imap")) {
        System.out.println("Establishing connection to: " + server);
        store.connect(user, pass);
        System.out.println("Connected!");

        Folder def = store.getDefaultFolder();
        Folder[] tmp = def.list("*");
        Folder[] folders = new Folder[tmp.length + 1];
        System.arraycopy(tmp, 0, folders, 0, tmp.length);
        folders[tmp.length] = def; // this is the root folder

        for(Folder f : folders)
            System.out.println("Foldername: " + f.getName());

// .... further processing of folder contents

如您所见,我也在打印默认根文件夹的名称, 到目前为止,在我的测试中一直是一个空字符串,因此它本身不包含电子邮件。

我的问题: 它是否取决于电子邮件提供商?如果根文件夹中将包含任何邮件,还是可以安全地假定根文件夹中仅包含一个子文件夹列表,而其本身将不再包含任何电子邮件?

1 个答案:

答案 0 :(得分:2)

某些IMAP服务器将使用INBOX作为根文件夹,因此,不能,您不能依赖不包含任何消息的根文件夹。