java - 使用javamail时,草稿gmail附件出现在垃圾文件夹中

标签 java gmail jakarta-mail imap gmail-imap

我正在使用 javamail 从 gmail 垃圾箱文件夹中读取电子邮件,如果草稿文件夹中有带有附件的电子邮件,那么这些附件将显示在垃圾箱文件夹中。

重现步骤: 1)创建带有附件的新电子邮件并关闭它,它会出现在草稿文件夹中。 2) 使用下面的程序从“垃圾箱”文件夹中读取电子邮件。草稿电子邮件中的附件出现。如果我在浏览器中打开“垃圾箱”文件夹,则看不到这些附件。您知道为什么使用 javamail 阅读电子邮件时附件会出现在“垃圾箱”文件夹中吗?

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();
            }
        }
    }
}

最佳答案

您的程序不会对附件执行任何操作。为什么您认为草稿邮件的附件而不是邮件本身出现在“废纸篓”文件夹中?这些附件附加到“垃圾箱”文件夹中的哪封邮件中?

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

关于java - 使用javamail时,草稿gmail附件出现在垃圾文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25290162/

相关文章:

java - Selenium webdriver : Modifying navigator. webdriver 标志以防止 selenium 检测

JavaFX如何将 "crop"图形转为按钮

java - 不使用时区 API 从用户当前地理位置获取时区

javascript - 从 javascript 打开 gmail 撰写窗口( Angular )

javascript - gmail javascript 书签

sorting - javamail imap如何通过接收日期desc获取邮件订单

Java JAXB XJC代码生成表单XSD模式问题

php - 使用两步身份验证/验证登录 Zend Gdata

java - 相同的代码,通过 Lotus Domino 发送电子邮件的不同行为

附件的 Javax 邮件文件路径