如何在MimeMessage java中修剪Email中的用户签名

时间:2013-04-30 07:57:46

标签: java mime-message

我有一个java应用程序,它处理一些用户回复的gmail收件箱,处理这些回复并将它们放入数据库。我目前正面临一个问题,我想在电子邮件内容中识别用户签名,修剪它们并将其余内容存储在数据库中。

我正在将电子邮件发送到MimeMessage中,从中获取内容并进行处理。

有没有办法从MimeMessage内容或任何标题中删除签名,这些标题可以告诉我该电子邮件具有用户签名以及从哪里开始的边界?

我已经搜索过了,但没有发现这一点。任何帮助将不胜感激!。谢谢:))

2 个答案:

答案 0 :(得分:0)

访问http://javamail-crypto.sourceforge.net/。它是Sun的JavaMail API的API补充,它使用S / MIME和/或OpenPGP提供对电子邮件的简单加密和解密。

答案 1 :(得分:0)

我自己就是这个问题。由于我无法找到关于这个问题的更多信息,我会在这里发布我的答案,即使这个问题已经很久了。

我使用https://stackoverflow.com/a/34689614/4001577中的代码将消息作为HTML进行检索。

可悲的是,由于邮件软件基本上自动添加内容,因此没有标记可以告诉我签名的开始位置。

我所做的基本上是:

  • 寻找包含xing或LinkedIn作为Url的锚点(因为我们所有的签名都包含公司的社交媒体资料)
  • 获取该元素的索引
  • 删除该元素之后的所有元素,包括
private static Element trimSignature(final Element body) {
    final Elements anchors = body.getElementsByTag("a");
    Element signatureAnchor = null;
    for (Element anchor : anchors) {
        if(anchor.attr("href").contains("xing.com/companies")) {
            signatureAnchor = anchor;
            break;
        }
    }
    final Integer signatureElemIndex = signatureAnchor.elementSiblingIndex();
    final Elements children = body.children();
    for(int i = signatureElemIndex; i < children.size(); i++) {
        children.get(i).remove();
    }
    return body;
}