使用 Javamail API 确定将电子邮件置于哪个 Gmail 标签下

use*_*861 5 java gmail tabs jakarta-mail

我工作的应用程序,可以决定哪些Gmail标签中的电子邮件被置于下(即SocialPromotions等)。有什么方法可以确定使用 Javamail API 将电子邮件放入哪个 Gmail 标签?或者是否有其他一些应用程序可以确定这一点?

提前致谢。

Shi*_*mar 0

JavaMail API 和 Gmail API 的标准 IMAP/SMTP 功能一起就足够了,甚至可以处理标签。但要获取自定义 Gmail 属性 X-GM-THRID 和 X-GM-LABELS,请查看Gmail Imap 扩展

\n\n

为了从 Gmail 获取邮件列表,您必须实现标准 javamail 配置文件获取:

\n\n
folder.fetch(msgs, stdFetchProfile);\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在要从 Gmail 获取标签/选项卡/标签列表,请使用以下命令调用自定义方法IMAPFolder\xe2\x80\x99s doCommand()

\n\n
final MessageSet[] mSets = MessageSet.createMessageSets(mns);\n((IMAPFolder) folder).doCommand(new IMAPFolder.ProtocolCommand() {\n    @Override\n    public Object doCommand(IMAPProtocol p) throws ProtocolException {\n        try {\n            Response[] r = p.fetch(mSets, "X-GM-LABELS X-GM-THRID");\n            for (int i = 0; i < r.length; i++) {\n                if (!FetchResponse.class.isInstance(r[i]))\n                    continue;\n\n                // Got a FetchResponse.\n                GmailFetchResponse gfr = new GmailFetchResponse(\n                                ((FetchResponse) r[i]).toString());\n                // Use gfr.getNumber() to get the msg number\n                for (int j = 0; j < gfr.getItemCount(); j++) {\n                    Item item = gfr.getItem(j);\n                    if (X_GM_LABELS.class.isInstance(item))\n                        // get the labels\n                        ((X_GM_LABELS) item).x_gm_labels);\n                }\n            }\n        } catch (ProtocolException e) {\n            logError(e.getMessage(), e);\n        }\n        return null;\n    }\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后您需要使用java-gmail-imap \' parse() 方法重新解析。

\n\n

以下链接对上述实现进行了很好的解释。

\n\n

使用 javamail 获取 Gmail 标签

\n\n

希希尔

\n