JavaMail 发送邮件不正常 html标签无法正常渲染

JavaMail 发送邮件不正常 html标签无法正常渲染

 半途接的项目,其中有一个发送邮件的需求,原来的哥们着急赶进度,就随手写了写,当时用的富文本编辑器,他却用纯文本的格式发送邮件内容,结果就是邮件正常收到,但是内容有好多html 标签,于是我查了 JavaMail 的用法,将格式设置成 “text/html;charset=utf-8”,结果就是收到的邮件内容还和原来的一样,没效果…

  当我修改完毕后,程序可以正常的在本地 main方法中运行,html标签可以被解析,但是集成到项目后,运行在tomcat时,程序不报错,但是接到的邮寄中html 标签无法解析;这下就更郁闷了,本地main方法运行是没问题的,但是集成到项目 这个方法就不好用了;当时催的紧,就上网上找了好几个方案,这些方案单独在 main 方法中测试是正常的,但是集成到项目中时,要么 html 标签解析不了,要么报了各种各样的错。晚上回家时还在郁闷整么回事呢~~

 考虑了一晚上,依然没有头绪,后来决定再换个方法,这次采用 apache mail的方案,本地main 测试正常,开始集成到项目中去,发现报错了,网上说 缺少 java-mail,activation 这两个jar 文件,但是我项目中肯定是有这写jar文件的。突然我意识到,会不会jar冲突,我去pom 文件中查找关于mail 的相关jar,后来果然发现了一个项目好像没有用到的jar geronimo-spec-javamail ,去掉这个jar引用后,项目就没有报错,html标签 也能正常渲染。

后来上网查询了一下发现geronimo-spec-javamail 也是一个 java mail 的组件,但是他可能会和 javamail冲突,如果不清楚这一点,就可能浪费更多时间。
总的来说还是项目的问题,如果开发项目时有标准的规范,这样冲突会小很多,现在这个项目是两个人完成的,各自完成各自的部分,连 JavaMail 都各自写了一套。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java EasyExcel 是一个非常方便的 Excel 操作工具,支持读写 Excel 文件,包括导入和导出。在使用 EasyExcel 进行导出时,如果您想要设置富文本样式,可以通过以下方式实现: 1. 在实体类中使用 `@ExcelProperty` 注解定义要导出的字段,并通过 `@ContentStyle` 注解指定富文本样式。 例如: ```java public class DemoData { @ExcelProperty(value = "姓名") private String name; @ExcelProperty(value = "内容") @ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 10) private String content; // getter 和 setter 方法省略 } ``` 在上述代码中,`@ContentStyle` 注解指定了 `FillPatternType.SOLID_FOREGROUND` 填充模式和 `fillForegroundColor = 10` 背景颜色,从而实现了富文本样式的设置。您可以根据自己的需求设置其他样式。 2. 在导出 Excel 文件时,使用 `write` 方法将数据写入到文件,并通过 `SheetBuilder.head` 方法指定表头信息。 例如: ```java public static void writeExcelWithStyle() { String fileName = "demo.xlsx"; try { OutputStream out = new FileOutputStream(fileName); List<DemoData> data = getData(); ExcelWriter writer = EasyExcel.write(out).build(); Sheet sheet = new Sheet.Builder().sheetName("sheet1").build(); writer.write(data, sheet.head(head()).build()); writer.finish(); } catch (FileNotFoundException e) { e.printStackTrace(); } } private static List<List<String>> head() { List<List<String>> head = new ArrayList<>(); List<String> head0 = new ArrayList<>(); head0.add("姓名"); List<String> head1 = new ArrayList<>(); head1.add("内容"); head.add(head0); head.add(head1); return head; } private static List<DemoData> getData() { List<DemoData> data = new ArrayList<>(); DemoData demoData = new DemoData(); demoData.setName("张三"); demoData.setContent("这是一段带有富文本样式的内容"); data.add(demoData); return data; } ``` 在上述代码中,`SheetBuilder.head` 方法中的 `head()` 方法指定了表头信息,其中包括了要导出的字段名和样式信息。 通过以上方式,您可以实现 EasyExcel 富文本样式的设置。如果您的样式还是不生效,可以检查一下是否存在其他代码问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值