使用javamail按域过滤电子邮件

问题描述 投票:1回答:1

我正在使用javamail下载电子邮件,但现在我需要按域过滤一些电子邮件地址。

我尝试使用FromStringTerm,但我不知道正确的模式来过滤它。

编辑1:jmehrens部分解决了我的问题。当我从文件夹中收到消息时,我想过滤,例如:

            Store store = session.getStore("imap");
            store.connect(configc.host, configc.email, configc.pass);
            Folder folderInbox = store.getFolder("INBOX");
            folderInbox.open(Folder.READ_ONLY);

            Message[] arrayMessages1 = folderInbox.search(??);

我如何在此时按域过滤?

java javamail
1个回答
2
投票

FromStringTerm继承了javax.mail.search.SearchTerm中描述的行为:

该类实现了Strings的匹配方法。当前实现仅提供子字符串匹配。我们可以添加比较(如strcmp ......)。

所以没有模式,因为它开箱即可执行子串匹配。

这是一个测试用例:

public class DomainMatch {

    public static void main(String[] args) throws Exception {
        MimeMessage msg = new MimeMessage((Session) null);
        msg.addFrom(InternetAddress.parse("[email protected]"));
        msg.saveChanges();

        System.out.println(new FromStringTerm("@bar.org").match(msg));
        System.out.println(new FromStringTerm("@spam.org").match(msg));
    }
}

使用javax.mail.Folder::search文档,你会写如下:

Store store = session.getStore("imap");
store.connect(configc.host, configc.email, configc.pass);
Folder folderInbox = store.getFolder("INBOX");
folderInbox.open(Folder.READ_ONLY);

Message[] onlyBarOrg = folderInbox.search(new FromStringTerm("@bar.org"));
© www.soinside.com 2019 - 2024. All rights reserved.