Jag*_*esh 39 java gmail imap jakarta-mail
我正在使用JavaMail API连接到我的个人帐户.我在我创建的Gmail帐户中有文件夹(标签)列表+收件箱,草稿等默认文件夹.如何列出所有可用文件夹(默认和用户创建的文件夹)?
我可以使用此API访问特定文件夹:Folder inbox = store.getFolder("Inbox");.是否有其他API可以获取邮件帐户中可用的文件夹列表?
dka*_*arp 62
谢尔盖很接近,但默认情况下,JavaMail会list()执行a LIST "" %,它只为您提供顶级文件夹.GMail将其系统文件夹(所有邮件,草稿,已发邮件,垃圾邮件,已加星标和已删除邮件)放在不可选择的文件夹下[Gmail],因此您确实需要执行此操作LIST "" *.否则,你刚刚回来INBOX,[Gmail]和你的标签.
下面是一些连接到GMail的示例代码,获取文件夹列表,并打印出每个非\NoSelect文件夹的名称和消息计数(即不仅仅是层次结构占位符的名称和消息计数[Gmail]):
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getDefaultInstance(props, null);
javax.mail.Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "<username>@gmail.com", "<password>");
javax.mail.Folder[] folders = store.getDefaultFolder().list("*");
for (javax.mail.Folder folder : folders) {
if ((folder.getType() & javax.mail.Folder.HOLDS_MESSAGES) != 0) {
System.out.println(folder.getFullName() + ": " + folder.getMessageCount());
}
}
} catch (MessagingException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
Nis*_*ant 37
这是有效的代码.这将使您处理所有标签.要深入了解a folder,您可以执行folder.list()或者可以使用store.getDefaultFolder().list("*")其他答案中的建议检索所有文件夹和子文件夹.
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "YOURMAILID@gmail.com", "UR_P@ZZWRD");
System.out.println(store);
Folder[] f = store.getDefaultFolder().list();
for(Folder fd:f)
System.out.println(">> "+fd.getName());
Run Code Online (Sandbox Code Playgroud)
输出:
>> INBOX
>>个人
>>收据
>>旅游
>>工作
>> [Gmail]
老答复
这些应该做:
http://java.sun.com/products/javamail/javadocs/javax/mail/Store.html#getSharedNamespaces%28%29
小智 8
您可以访问此类其他文件夹
store.getFolder("[Gmail]/Sent Mail");
store.getFolder("[Gmail]/Drafts");
Run Code Online (Sandbox Code Playgroud)
等等
| 归档时间: |
|
| 查看次数: |
55776 次 |
| 最近记录: |