如何在html邮件中区分“真实”邮件附件与pics?

时间:2012-03-04 17:40:52

标签: c# .net pop3 openpop

我正在搞乱OpenPop,一个用C#编写的用于POP3邮件提取的库。它似乎工作正常,但我不明白如何在显式附加文件与邮件之间做出区分,以及像HTML内容邮件中的图片之类的东西。这个库将它们全部视为“附件”。根据我的需要,我不会将HTML邮件中的图片视为附件 来自图书馆文档:

  

如果是,则将MessagePart视为附件    - 它没有保留文本,也不是MultiPart消息   或
   - 它有一个Content-Disposition标题,表明它是一个附件

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

3 个答案:

答案 0 :(得分:5)

您可以检查电子邮件正文中是否引用了图像文件。您需要解析HTML并在CSS选择器中查找imgbackground-image属性等标记。如果邮件本身未使用该图像,则将其视为“真正的”附件。

答案 1 :(得分: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
    }
}

答案 2 :(得分:3)

我是OpenPop.NET的开发人员。

这只是关于电子邮件包含附件的一些背景信息。 Tony the Pony的回答是要走的路。

当我实现OpenPop.NET的那部分时,我还遇到了将附件与非附件区分开的问题。 MIME has a header, Content-Disposition能够判断某个部分是否是附件。

例如,这是附件

Content-Disposition: attachment

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

Content-Disposition: inline

看起来有多好,问题是很多电子邮件客户端都没有添加这些标题,这使得像OpenPop.NET这样的读者很难。我们选择不查看电子邮件的所有HTML部分以查看正在评审的图像,因此现在由图书馆的用户决定。

如果您针对该问题制定了良好的解决方案,可以将其添加为项目的示例。