我正在搞乱OpenPop,一个用C#编写的用于POP3邮件提取的库。它似乎工作正常,但我不明白如何在显式附加文件与邮件之间做出区分,以及像HTML内容邮件中的图片之类的东西。这个库将它们全部视为“附件”。根据我的需要,我不会将HTML邮件中的图片视为附件 来自图书馆文档:
如果是,则将MessagePart视为附件 - 它没有保留文本,也不是MultiPart消息 或
- 它有一个Content-Disposition标题,表明它是一个附件
至少在理论上我应该做什么或搜索什么(因为我对邮件协议并不熟悉)?
答案 0 :(得分:5)
您可以检查电子邮件正文中是否引用了图像文件。您需要解析HTML并在CSS选择器中查找img
或background-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部分以查看正在评审的图像,因此现在由图书馆的用户决定。
如果您针对该问题制定了良好的解决方案,可以将其添加为项目的示例。