我正在研究电子邮件客户端,我想知道决定附件是否是常规附件(可下载的文件,如pdf,视频,音频等)的正确算法... )或内联附件(这只是HTML字母的嵌入部分)。
直到最近,我已经检查了体型是否正确(假设消息部分不是多部分,否则我将递归地进行解析)不是TEXT。也就是说,无论是APPLICATION,
IMAGE
,AUDIO
还是VIDEO.
如果是这种情况,我会查看第九个元素是否等于ATTACHMENT
或{{ 1}}。我认为,如果它是INLINE,那么它是一个嵌入式HTML粒子,而不是常规附件。
但是,最近我收到的电子邮件中包含一些HTML邮件正文和常规附件。问题是它的身体结构看起来像这样:
INLINE
问题是,为什么可下载的pdf文件类型为 INLINE ?用于确定文件是嵌入的html粒子还是可下载文件的适当算法是什么?我应该查看父子类型以查看它是否为1. mutlipart/mixed
1.1. mutlipart/alternative
1.1.1. text/plain
1.1.2. multipart/relative
1.1.2.1. text/html
1.1.2.2. Inline jpeg
1.1.2.3. Inline jpeg
1.2. pdf inline (why 'inline'? Should be 'attachment')
1.3. pdf inline (why 'inline'? Should be 'attachment')
并忽略内联vs附件参数?
答案 0 :(得分:1)
确实没有定义的“一刀切”算法。 inline
或attachment
是发件人设置的内容,并提示他们是否希望将其inline
(自动呈现)显示为attachment
(显示在列表),或两者都没有(没有偏好)。
还有一些有时被称为“嵌入式”的附件,它们是带有Content-ID
的附件(这是在主体结构响应中),并且由< img>中的cid:
引用引用;标签等。
所以,这几乎必须以启发的方式完成。
这实际上取决于您的需求和您的客户能力,但这里有一个您可能会考虑使用某些组合的启发式列表(其中一些是相互排斥的):
image/*
,如果您愿意可以text/*
),那么它就是内联的。此外,inline
的原始版本仅表示发件人希望自动呈现;这经常与referenced by the HTML section
(我称之为嵌入式)混为一谈。这些并不完全相同。