【问题标题】:Javamail linebreaks cannot be saved into databaseJavamail 换行符无法保存到数据库中
【发布时间】:2016-06-10 05:27:28
【问题描述】:

我正在使用 javamail 读取邮箱并将所有收到的邮件保存到我的应用程序的 sql 数据库中。我的问题是当邮件为字符串格式时,换行符不会保存到数据库中。例如,我正在阅读的邮件(在日志中看到)如下所示

Hello

This is a test mail

Regards

Sender

但在数据库列中,它保存为续行-

Hello This is a test mail Regards Sender 

我正在为上述任务使用以下代码

if(content instanceof String){
  String body = (String)content;

  inBox.setMailContent(body);

  inBoxDAO.save(inBox);
}

我以前没有使用过邮件的东西,任何建议都会有所帮助。请注意,这与多部分 html 格式完美配合。问题在于发件人的邮件以纯文本形式发送

【问题讨论】:

  • html 可能没有任何换行符。我认为问题不在于邮件部分。这可能与您在数据库中存储和检索数据的方式有关。

标签: java jakarta-mail


【解决方案1】:

您可以使用 \n 换行。您可能必须对从数据库中获得的字符串进行转义。 Apache Commons Lang 有一个方法:

http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html#unescapeJava%28java.io.Writer,%20java.lang.String%29

  • 它会将“\”和“n”的序列转换为换行符,除非“\”前面有另一个“\”。

所以你只需调用

String content = StringEscapeUtils.unescapeJava(rs.getString("content"));

【讨论】:

  • 为什么数据会包含'\'和'n'的序列?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 2022-01-22
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多