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

Connecting to an imap server and processing the contents of the root folder

我正在使用以下 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

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

我的问题: 这是否取决于电子邮件提供商,根文件夹是否将包含任何消息,或者假设根文件夹将仅包含子文件夹列表但本身永远不会有任何电子邮件消息是否安全?

一些 IMAP 服务器将使用 INBOX 作为根文件夹,所以不,你不能依赖根文件夹不包含任何消息。