如何确定每个 mime 1.0 电子邮件的区域设置
Posted
技术标签:
【中文标题】如何确定每个 mime 1.0 电子邮件的区域设置【英文标题】:How to determine locale per mime 1.0 email message 【发布时间】:2014-01-28 14:00:07 【问题描述】:是否可以确定电子邮件 (MIME 1.0) 的区域设置(语言)?我正在处理的特定用例是尝试区分每封电子邮件的某些语言环境,然后根据自定义 smtp 服务器进行相应的翻译。
【问题讨论】:
【参考方案1】:查看 Content-Type 标头的字符集值。除非是 UTF-8,否则您通常可以了解电子邮件的编写语言。
这有帮助吗?
【讨论】:
感谢您的回复。还会出现哪些其他值?我看到的唯一想法是 Content_Type="multipart/alternative; 或 Content-Type: multipart/alternative; boundary=047d7b6dd0b4e9d04104ef8f7021。所以没有 utf8 但这两条消息实际上是 en_US。 刚看到你的评论。该内容类型标头表示您的消息由替代部分组成。您需要再向下钻取 1 个级别,并查看子部分的内容类型。 US-ASCII 或 ISO-8859-1 等流行字符集用于多种语言,包括许多实际上并不适合的语言(由于历史原因,或者因为用户不适合)能够 - 或允许! - 正确配置它)。同样,最近版本的 Exchange 似乎放入了 X-Accept-Language: 标头,它反映了服务器的配置,而不是用户的偏好。【参考方案2】:没有可靠的方法,但在某些情况下,像libtextcat
这样的语言猜测器的精度就足够了。
如果您沿着这条路线走,请注意libtextcat
附带了非常粗略的语言模型集合,这些语言模型基本上只是概念证明。 LibreOffice 维护一个 fork libexttextcat
,它具有适当的语言模型,但仅适用于 Unicode。创建自己的语言模型也不是很难。
【讨论】:
以上是关于如何确定每个 mime 1.0 电子邮件的区域设置的主要内容,如果未能解决你的问题,请参考以下文章
从 PHP 发送 MIME 电子邮件时,Exim 会覆盖“发件人”标头