我正在使用Java 8和Spring API编写邮件正文,如下所示。
StringBuilder emailTemplateForNewPassword = new StringBuilder();
emailTemplateForNewPassword.append("Dear User,");
emailTemplateForNewPassword.append(System.lineSeparator());
emailTemplateForNewPassword.append(System.lineSeparator());
emailTemplateForNewPassword.append("Sample Mail.");
emailTemplateForNewPassword.append(System.lineSeparator());
emailTemplateForNewPassword.append(System.lineSeparator());
emailTemplateForNewPassword.append("Yours Faityfully,");
emailTemplateForNewPassword.append(System.lineSeparator());
emailTemplateForNewPassword.append("ABC.Com");
emailTemplateForNewPassword.append(System.lineSeparator());
emailTemplateForNewPassword.append("0094778999658");
预期结果:
尊敬的用户,
示例邮件。
忠实的用户,
ABC.Com
0094778999658实际结果:
尊敬的用户,
示例邮件。
忠实的用户,ABC.Com 0094778999658
即使使用System.lineSeparator()
,我也不确定为什么最后三行都在同一行。
我已经尝试过"\r\n"
,但是没有运气。
谁能建议出什么问题了?
我知道还有其他与此相关的问题,但是没有一个可以解决我的问题。在找到答案之前,请不要低估这个问题。
答案 0 :(得分:4)
RFC 5322描述了电子邮件的标准。
消息分为字符行。一条线是一系列 以两个字符回车符分隔的字符 和换行;即回车(CR)字符(ASCII 值13)后紧跟换行(LF)字符(ASCII 值10)。 (回车/换行符对通常用 该文档称为“ CRLF”。)
您需要显式使用\r\n
来分隔行。
您不能依靠System.lineSeparator()
,因为这取决于JVM的配置。默认情况下,该配置将仅在Linux上使用\n
。