【发布时间】:2014-10-07 01:10:34
【问题描述】:
我正在使用 javamail 从 gmail Trash 文件夹中读取电子邮件,如果 Draft 文件夹中有带有附件的电子邮件,那么这些附件会出现在 Trash 文件夹中。
重现步骤: 1)创建带有附件的新电子邮件并关闭它,它出现在草稿文件夹中。 2)使用下面的程序从垃圾文件夹中读取电子邮件。来自草稿电子邮件的附件出现。如果我在浏览器中打开垃圾箱文件夹,我看不到这些附件。你知道为什么使用javamail阅读电子邮件时,附件会出现在Trash文件夹中吗?
import java.io.IOException;
import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
public class MailClient {
public static void main(String[] args) throws Exception {
MailClient client = new MailClient();
client.execute();
}
void execute() throws MessagingException, IOException {
String[] credentials = new String[] {"name@gmail.com", "password"};
boolean debug = false;
Folder folder = null;
Store store = null;
try {
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getDefaultInstance(props, null);
session.setDebug(debug);
store = session.getStore("imaps");
store.connect("imap.gmail.com", credentials[0], credentials[1]);
folder = store.getFolder("[Gmail]/Trash");
folder.open(Folder.READ_WRITE);
Message messages[] = folder.getMessages();
System.out.println("No of Messages : " + folder.getMessageCount());
System.out.println("No of Unread Messages : " + folder.getUnreadMessageCount());
for (int i = 0; i < messages.length; ++i) {
System.out.println("MESSAGE #" + (i + 1) + ":");
Message msg = messages[i];
String from = "unknown";
if (msg.getReplyTo().length >= 1) {
from = msg.getReplyTo()[0].toString();
} else if (msg.getFrom().length >= 1) {
from = msg.getFrom()[0].toString();
}
String subject = msg.getSubject();
System.out.println(subject);
msg.setFlag(Flags.Flag.SEEN, true);
}
} finally {
if (folder != null) {
folder.close(true);
}
if (store != null) {
store.close();
}
}
}
}
【问题讨论】:
-
我遇到了同样的问题。 “幽灵”附件是从 IMAP 的视角显示的,但它们不会显示在 gmail 客户端中。不确定谷歌到底在做什么。
标签: java gmail jakarta-mail imap gmail-imap