新行命令(\n)在使用TomCat的手绘文件时无效

om3*_*39a 5 java file jakarta-mail readfile

我正在尝试通过从文本文件中读取内容来发送邮件.

文件我想读

Line 1
Line 2
Line 3
Run Code Online (Sandbox Code Playgroud)

我用JUnit测试了代码,我得到的邮件格式与文本文件相同.

使用Junit输出邮件

Line 1
Line 2
Line 3
Run Code Online (Sandbox Code Playgroud)

但是当在Tomcat中部署时,我收到一封带有文本的邮件,但新行没有得到识别.

使用tomcat服务器时输出邮件

Line 1Line 2Line 3
Run Code Online (Sandbox Code Playgroud)

我用来读取文件内容的代码.

private String readFile(String pathname) throws IOException {
        File file = new File(pathname);
        StringBuilder fileContents = new StringBuilder((int) file.length());
        Scanner scanner = new Scanner(file);
        String lineSeparator = System.getProperty("line.separator");

        try {
            while (scanner.hasNextLine()) {
                fileContents.append(scanner.nextLine() + lineSeparator);
            }
            return fileContents.toString();
        } finally {
            scanner.close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我已将服务器置于调试模式,我可以看到新行被追加 fileContents.toString()

我不确定我错过了什么.什么与字符集有关?我不确定....

om3*_*39a 1

这和Perception和nullix的线索有关。邮件的阅读方式和 HTML。

就我而言,我通过从邮件客户端发送邮件进行测试,该邮件客户端向我的应用程序发送“text/html”类型的消息。所以当我回复该邮件时,回复邮件也是“text/html”格式。因此/n或我使用的任何换行类型被省略。

因此,在阅读邮件时,我只阅读“文本/纯文本”哑剧类型。因此,在回复此邮件时,我可以打印新行。