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 修复了它。
问题似乎与 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 修复了它。