如何通过文件扩展名获取电子邮件附件的 MIME 类型?

How to get email attachment MIME type by file extension?

我正在尝试编写一个 class,它将使用 Mandrill APIs 发送带有附件的电子邮件。为此,我需要为 base-64 编码的附件内容提供 MIME type of the attachment。问题是如何得到它,假设使用附件的文件扩展名?

PS。我希望有比长期 switch/case 情况更好的事情。但如果那是我唯一的选择,我在哪里可以获得此类关联的最详尽列表?

您可以在注册表中查看:

  1. HKEY_CLASSES_ROOT\<file extension>\ 看看它是否有 "Content Type" 值。

  2. HKEY_CLASSES_ROOT\MIME\Database\Content Type\,枚举每个子项,直到找到一个 "Extension" 值包含文件扩展名的子项。

还有一个FindMimeFromData() function.

如果找不到匹配的内容类型,您可以随时使用 application/octet-stream

除了另一个答案中的建议,这里是我从 this Ruby project's JSON 列表转换为 C 的文件扩展名到 MIME 类型关联的硬编码列表-结构。

糟糕,不能 post 放在这里。它太长了。 Here's the file 相反。