CSV文本电子邮件附件中的Java换行符/换行符会破坏完整的附件

时间:2018-01-01 21:31:22

标签: java csv javamail

我正在将CSV文本文件作为带有Java的附件邮件发送到我的程序中。如果我添加包含数据的字符串(标题和值),附件似乎很好,除了所有内容都在一行(我实际上忘记了换行符)。

MimeBodyPart attachPart = new MimeBodyPart();
attachPart.setDataHandler(new DataHandler(new ByteArrayDataSource(s3_string.getBytes(), "text/csv")));
multipart.addBodyPart(attachPart);

然而,当我在字符串中以“\ n”或“\ r \ n”的形式添加换行符时,整个附件都搞砸了,我得到像 “Content-Transfer-Encoding:7bit 内容 - 处理:附件;等等“

以及我原始邮件中的内容。

有没有办法将换行符添加到CSV以使其成为有效的CSV附件?

提前致谢,

Hello world!

1 个答案:

答案 0 :(得分:0)

我找到了它!

我正在将文件从s3读入带有Strings的LinkedList,但这似乎是一种效率低下的方法(尽管将文件写入tmp并附加它会更有效)。我修理了它:

                    MimeBodyPart attachPart = new MimeBodyPart();

                    try {
                        ByteArrayDataSource byte_array_data_source = new ByteArrayDataSource(s3.returnS3Object(this.bucketName, raw_s3_file_location).getObjectContent(),"text/csv");
                        attachPart.setDataHandler(new DataHandler(byte_array_data_source));
                        attachPart.setFileName(raw_s3_file_location.substring(raw_s3_file_location.indexOf("/")+1));

                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                    multipart.addBodyPart(attachPart);