5

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

我正在尝试阅读的文件

Line 1
Line 2
Line 3

我已经使用 JUnit 测试了代码,并且收到了与文本文件格式相同的邮件。

使用 Junit 输出邮件

Line 1
Line 2
Line 3

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

使用tomcat服务器时输出邮件

Line 1Line 2Line 3

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

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();
        }
    }

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

我不确定我错过了什么。有什么和字符集有关的吗?我不确定....

4

2 回答 2

1

它与 Perception 和 nullix 的线索有关。如何阅读邮件和 HTML。

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

因此,在阅读邮件时,我只阅读“文本/普通” mime 类型。所以在回复这封邮件时,我可以打印新行。

于 2012-12-20T10:15:01.643 回答
0

也许您阅读邮件输出的方式让您认为换行符不存在。例如,如果您将 '\n' 写为换行符,并在 Windows 记事本上打开文件,那么它会看起来好像换行符不存在。

使用更复杂的文本查看器,如 Notepad++,您可以在其中看到空格字符可能会有所帮助

于 2012-12-20T05:20:57.090 回答