如何在 MimeMessage java 中从电子邮件中删除用户签名

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

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

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

我使用来自https://***.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;
 

【讨论】:

以上是关于如何在 MimeMessage java 中从电子邮件中删除用户签名的主要内容,如果未能解决你的问题,请参考以下文章

smtp / c# - 使用MimeMessage实例时如何设置回复电子邮件地址

读取电子邮件的文本文件转换为 Javamail MimeMessage

Map可以将java类ByteArrayoutputstream作为值吗? Can List可以保存javax.mail.MimeMessage对象吗?

在 javax.mail.MimeMessage 中设置发件人名称?

javamail 阅读邮件时,有啥理由使用 Message 而不是 MimeMessage 等?

JavaMail 内容传输编码问题