Smtp 引用的可打印Mime单词应该如何包装到正确的行长度?

Smtp 引用的可打印Mime单词应该如何包装到正确的行长度?,smtp,mime,rfc5322,Smtp,Mime,Rfc5322,我在一个mime解析库中遇到了一个错误,它在主题行上爆炸,主题行包含超过一定长度的外来字符。事实证明,它会将主题转换为一个引用的可打印MIME“”,然后尝试将整个内容包装成78个字符。因为MIME Word编码没有空格(它们被下划线替换),所以无法包装 正在换行的示例行: Subject: =?UTF-8?Q?lalalla_=E7=84=A1=E6=AD=A4=E7=84=A1=E6=AD=A4=E9=A0=85=E7=9B=AE=AE=AE=AE=AE=AE=AE=AE=AE?= 我想我可

我在一个mime解析库中遇到了一个错误,它在主题行上爆炸,主题行包含超过一定长度的外来字符。事实证明,它会将主题转换为一个引用的可打印MIME“”,然后尝试将整个内容包装成78个字符。因为MIME Word编码没有空格(它们被下划线替换),所以无法包装

正在换行的示例行:

Subject: =?UTF-8?Q?lalalla_=E7=84=A1=E6=AD=A4=E7=84=A1=E6=AD=A4=E9=A0=85=E7=9B=AE=AE=AE=AE=AE=AE=AE=AE=AE?=
我想我可以为库提供一个补丁来正确地包装行,但是我找不到关于如何将MIME单词分解为单词包装算法的一部分的参考

表示在空格处换行,但不提供任何指导,说明如果字符串中没有超出目标宽度的空格,该如何处理


有人知道这里要采取的正确措施吗?

只需在需要的地方拆分行,然后继续第二行。例如:

Subject: =?UTF-8?Q?lalalla_=E7=84=A1=E6=AD=A4=E7=84=A1=E6=AD=A4?=
 =?UTF-8?Q?=E9=A0=85=E7=9B=AE=AE=AE=AE=AE=AE=AE=AE=AE?=
只需确保第二行(以及后面的)包装行以空格或制表符开头即可

hth,

--Dave

那么,看起来你要做的是解码Mime单词,然后进行某种拆分/单词包装,然后重新编码?或者检测到以任意偶数三元组拆分mime单词并粘住\r\n\t=?UTF-8?Q?作为分隔符,您应该能够在任何地方分割线。只需确保正确开始和结束线。