JAVA 邮件从主题中去除双空格

JAVA Mail Stripping out double spaces from Subject

问题似乎与 MimeUtility.unfold() 方法有关。当主题通过 MimeUtility.fold() 折叠时,如果主题超过折叠字符阈值,它会插入一个换行符。展开后,如果换行符后存在多个 space,则 space 将被删除。下面的例子说明了这个问题。如有任何帮助,我们将不胜感激。

String test = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa          bbbbbbbbbbb";

System.out.println("Subject Length Before Folding = " + test.length());

test = MimeUtility.fold(9, test);//As per MimeMessage.setSubject();
System.out.println("Subject Length After Folding = " + test.length());

test = MimeUtility.unfold(test); //As per MimeMessage.getSubject(); drops spaces after newline
System.out.println("Subject Length After Unfolding = " + test.length());

是的,你是对的。 JavaMail 试图通过用单个 space 替换多个 space 和选项卡来清理 header。通常,这无关紧要,如果 header 使用制表符而不是 space 折叠到 "indent" 续行,通常会使 header 值看起来更好。

但是,严格来说,续行开头的白色space应该保留。

我提交了一个 bug,我为 JavaMail 1.6 修复了它。