【问题标题】:Draft gmail attachments appear in trash folder when javamail is used使用 javamail 时,Gmail 附件草稿出现在垃圾文件夹中
【发布时间】: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


【解决方案1】:

您的程序不会对附件做任何事情。为什么您认为草稿邮件的附件而不是邮件本身出现在垃圾箱文件夹中?这些附件附加到垃圾箱文件夹中的什么邮件?

您是如何创建草稿消息的?通过 Gmail 网络界面? Gmail 是否有可能保存了您的草稿邮件的多个草稿,而旧草稿被移到了“废纸篓”文件夹中,而草稿文件夹中只剩下最新的草稿?

【讨论】:

  • 我通过 Gmail 网络界面创建带有附件的草稿邮件。垃圾文件夹是空的 - 这就是我在 Web 界面中看到的。然后我想使用我展示的应用程序从垃圾文件夹中读取所有消息。我希望没有消息,因为垃圾文件夹是空的,但是应用程序从保存在草稿文件夹中的消息中接收附件(作为消息)。看起来草稿文件夹中的所有邮件附件都已移动/复制到垃圾箱文件夹中,但它们是隐藏的。
  • 可能是,我不知道 Gmail 是如何工作的。附件是否也在草稿文件夹中的邮件上? “垃圾箱”文件夹中的邮件是否有任何标志?如果您清空垃圾箱文件夹,这些邮件会消失吗?
猜你喜欢
  • 2018-04-09
  • 2011-11-10
  • 2017-05-01
  • 1970-01-01
  • 2019-10-14
  • 2012-12-31
  • 2014-08-17
  • 1970-01-01
  • 2012-09-26
相关资源
最近更新 更多