【问题标题】:How to trim off the user signature from Email in MimeMessage java如何在 MimeMessage java 中从电子邮件中删除用户签名
【发布时间】:2013-04-24 01:57:28
【问题描述】:

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

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

有没有办法从 MimeMessage 内容或任何可以告诉我电子邮件具有用户签名和它开始的边界的标题中修剪签名?

我已经用谷歌搜索了它,但没有找到任何东西。任何帮助将不胜感激!。谢谢:)

【问题讨论】:

    标签: java mime-message


    【解决方案1】:

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

    【讨论】:

    • 我已经离开了那份工作,所以现在没有办法检查它。无论如何,感谢您的帮助。
    【解决方案2】:

    我自己也遇到了这个问题。由于我找不到有关此问题的太多信息,因此我将在此处发布我的答案,即使这个问题已经很老了。

    我使用来自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;
    } 
    

    【讨论】:

      猜你喜欢
      • 2019-09-18
      • 2015-03-29
      • 2013-07-25
      • 2021-09-27
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 2019-05-19
      相关资源
      最近更新 更多