我正在使用以下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
如您所见,我也在打印默认根文件夹的名称, 到目前为止,在我的测试中一直是一个空字符串,因此它本身不包含电子邮件。
我的问题: 它是否取决于电子邮件提供商?如果根文件夹中将包含任何邮件,还是可以安全地假定根文件夹中仅包含一个子文件夹列表,而其本身将不再包含任何电子邮件?
答案 0 :(得分:2)
某些IMAP服务器将使用INBOX作为根文件夹,因此,不能,您不能依赖不包含任何消息的根文件夹。