6

我在搞乱 OpenPop,这是一个用 C# 编写的用于 POP3 邮件提取的库。它似乎工作正常,但我不太明白如何区分明确附加到邮件的文件和 HTML 内容邮件中的图片之类的东西。该库将它们全部视为“附件”。出于我的需要,我不会将 HTML 邮件中的图片视为附件。
从图书馆文档:

MessagePart 被认为是附件,如果
- 它不包含文本并且不是 MultiPart 消息,或者
- 它有一个 Content-Disposition 标头,表明它是一个附件

至少在理论上,我应该做什么或搜索什么(因为我并不真正熟悉邮件协议)?

4

3 回答 3

5

您可以检查电子邮件正文中是否引用了图像文件。您需要解析 HTML 并在 CSS 选择器中查找标签,例如img或属性。background-image如果邮件本身不使用图像,则认为它是“真正的”附件。

于 2012-03-04T17:48:57.930 回答
5

我已经这样做了,它似乎工作:

foreach (OpenPop.Mime.MessagePart fileItem in elencoAtt)
{
    System.Net.Mime.ContentDisposition cDisp = fileItem.ContentDisposition;

    //Check for the attachment...
    if (!cDisp.Inline)
    {
        // Attachment not in-line
    }
    else
    {
        // Attachment in-line
    }
}
于 2012-08-28T13:22:14.687 回答
3

我是OpenPop.NET的开发人员。

这只是有关包含附件的电子邮件的一些背景信息。小马托尼的答案是要走的路。

在实现 OpenPop.NET 的那部分时,我还遇到了区分附件和非附件的问题。MIME 有一个标头,Content-Disposition它能够判断某个部分是否为附件。

例如,这是一个附件

Content-Disposition: attachment

这里可能是电子邮件的 html 部分的图像

Content-Disposition: inline

这看起来多么美好,问题是许多电子邮件客户端不添加这些标题,这使得 OpenPop.NET 等读者很难。我们选择不查看电子邮件的所有 HTML 部分来查看引用了哪些图像,因此现在这取决于库的用户。

如果您针对该问题开发了一个好的解决方案,则可以将其添加为项目的示例。

于 2012-03-05T07:49:45.003 回答