Content-Transfer-Encoding:none - 如何解码内容?

时间:2014-01-21 11:04:33

标签: lotus-notes mime lotusscript

我使用Lotus Notes NotesMIMEEntity来解析和转换电子邮件。 NotesMIMEEntity有一个属性“Encoding”,它应该给我当前消息的编码。 通常情况下效果很好,但对于某些消息,我得到(有效)结果“无”或1725。

是否有可用于解码此类消息的默认编码,例如quoted-printable?如何确定邮件的格式。

我尝试了相关的RFC,但无法获得任何明确的信息。 Another question here正在采用启发式方法,这真的有必要吗?

非常感谢帮助。

2 个答案:

答案 0 :(得分:0)

对于普通SMTP,7bit将是默认的Content-Transfer-Encoding。 具体来说,要将quoted-printable编码为8bit,您可以使用此PHP函数:

string quoted_printable_decode ( string $str )

答案 1 :(得分:0)

如果它与ENC_NONE(1725)一起回来,则表明发送软件省略了Content-Transfer-Encoding标头,或者以某种方式将其搞砸,使其无法读取。

鉴于此,你要么必须假设它根本没有编码,要么你必须假设发送方可能真的已经编码了它,但忘记设置标题。在后一种情况下,您可能想要尝试猜测它是什么 - 即启发式方法。这种情况真的可能与您正在处理的消息有关吗?我无法回答你的问题。我也无法回答你是否真的有必要知道编码。这取决于您的要求是什么以及您要对数据做些什么。 (例如,如果要求您的Lotus Notes用户必须确切地看到未使用Lotus Notes的其他人如何看到该消息,那么问题在于其他人看到的将取决于他们使用的软件做出的假设!你真的不知道!)

坦率地说,除非有人专门向我展示了一条已经编码但内容传输编码标题不正确的消息,否则我会采用前一种解释,并设法提出一个理由,为什么该软件应该尝试修复发送方破坏的消息。

BTW:请记住,7bit,8bit和binary all 表示数据未编码。它们之间的区别仅仅是接收系统的“提示”,如果通过不同的方法重新传输数据,则可能需要对其进行编码。但是,在所有这些情况下,正确处理数据的方法是复制它而不应用任何转换(除非您接收8位数据,但是您在7位环境中运行)。