解决JavaMail附件名字过长导致的乱码问题

 更新时间:2020年10月11日 11:28  点击:1663

问题背景:

公司有个业务场景是审核客户机构通过后,给客户发送一封邮件,并将机构相关材料以附件形式一块发送,有些附件名正常,有些就乱了,如下图:

后来发现是附近名称过长导致的!

问题原因:java mail中设置附件名称会采用 base64格式进行编码,如果附件名称过长会被进行切割,将剩下字符抹去,所以导致不知道这是什么格式的文件。

注:虽然将文件格式被改变了,但是若强制转换成原格式(右键->另存为->xxx.pdf) 仍然可以进行打开,文件内容也并非改变(这是测试后的结果)

解决方案:

由于是spring boot 项目,只需要在main方法中加入以下 代码即可(大概意思就是,取消切割,默认是true)

System.setProperty("mail.mime.splitlongparameters", "false");

补充知识:LinkedList的增删一定比ArrayList快吗?

1.背景

众所周知,arrayList底层是通过数组实现,当其超过容量时,会进行1.5的扩容,将原数组数据迁移至新数组中。

而LinkedList底层为双向链表,其增加操作直接在尾部新增一个node节点即可。

那么,在插入相同的数据情况下(集合默认长度都是0),到底谁更快呢?

2.案例

  public static void main(String[] args) {
    List<String> array = new ArrayList<>();
    List<String> linked = new LinkedList<>();
    long start = System.currentTimeMillis();
    int index = 10000000;
    for (int i = 0; i < index; i++) {
      array.add("" + i);
    }
    long end = System.currentTimeMillis();
    System.out.println("ArrayList用时:" + (end - start) / 1000 + "s");
 
    start = System.currentTimeMillis();
    for (int i = 0; i < index; i++) {
      linked.add("" + i);
    }
    end = System.currentTimeMillis();
    System.out.println("LinkedList用时:" + (end - start) / 1000 + "s");
 
  }

3.结果

4.分析

此处我是这么理解的,arrayList是通过下标直接去放入数据,而linked需要创建一个Node然后 将数据放入,再与前节点建立链接。

然后不需要扩容的情况下,明显arrayList快,那么扩容呢?其实我们测试用的是尾部插入。

也就是arrayList扩容后直接将前面的数据放入对应下标,之后的在继续按照下标插入就行,也就是有序在尾部插入。

如果数据量大通过尾部插入的话(不指定下标,默认就是在尾部插入),linked的插入需要建立对应的对象,绑定关系,

而array则直接放置,其扩容也是按照原来顺序放入新数组,速度比较链表 要更快。

我还专门做了一个按照头部插入的方式,发现这时明显链表高于数组的速度。

5.总结(个人观点)

数组比之链表:

在需要扩容的前提下

插入效率随着下标的递增,其性能逐渐由链表偏向数组。

下标靠中间(链表的查询惨不忍睹),所以其中间效率也是极低的

而数组插入的下标靠前,会涉及其下标之后元素移位操作,所以index越靠前插入,效率越低

6.插入性能

以上这篇解决JavaMail附件名字过长导致的乱码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • php生成二维码中文乱码问题解决方法

    最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
  • C#读取中文文件出现乱码的解决方法

    这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24
  • PHP json_encode() 函数详解及中文乱码问题

    在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。<&#63;php$arr = array ( 'Name'=>'希亚', 'Age'...2015-11-08
  • Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16
  • 解决HttpPost+json请求---服务器中文乱码及其他问题

    这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22
  • php中iconv编码转换来解决中文乱码的问题

    用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些 代码如下 复制代码 ...2016-11-25
  • php mail发邮件标题中文乱码的问题解决办法

    本文章来给大家介绍php mail发邮件标题中文乱码的问题解决办法,希望到此类问题的朋友可进入参考。 当使用下面的PHP语句发送电子邮件的时候,如果编码和接收邮箱编码...2016-11-25
  • python os.listdir()乱码解决方案

    在本篇文章里小编给大家整理的是一篇关于python os.listdir()乱码解决方案,对此有兴趣的朋友们可以学习下。...2021-01-31
  • 解决PHPWord导出生成Word中文乱码问题

    PHPWord是一个可以把相关文件生成word文档的插件了,但由于是老外开发的对于gbk支持不好,所以我们在导出带有中文的word时会出现乱码问题,下面本文就PHPWord中文乱码问题...2016-11-25
  • PHP中截取中文乱码解决办法

    如果ASCii码大于0xa0就是半个汉字;了解substr()、mb_substr()、ord()。 现在常用的编码格式是UTF8,GBK,GBK2312,BIG5。GBK是GBK2312的升级。现在我开发中遇到的基本都...2016-11-25
  • .Net获取URL中文参数值的乱码问题解决方法总结

    这篇文章主要介绍了.Net获取URL中文参数值的乱码问题解决方法,总结分析了针对URL参数传递中出现的乱码问题与相应的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • iis伪静态中文url出现乱码的解决办法

    这篇文章主要介绍了iis伪静态中文url出现乱码的解决办法,需要的朋友可以参考下...2017-07-06
  • redis 解决key的乱码问题,并清理详解

    这篇文章主要介绍了redis 解决key的乱码问题,并清理详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-15
  • php move_uploaded_file 中文乱码问题或上传失败问题

    php是外国人做的,在中文支持上有些地方做得不完美,就在我们文件上传时就发现了,上传中文竟然不成功, 下面我们来看看实例与解决方法吧。 */ $filepath ='upfile/'; if (...2016-11-25
  • 用PHP发送有附件的电子邮件

    我经常听到这样一个问题:"我有一个从网站发来的合同。我如何给通过表单发送的电子邮件增加一个附件呢?" 首先我要说的是要做到这个没有什么简单的办法。你要很好的理解PH...2016-11-25
  • asp.net中在用ajax格式传递数据到aspx页面时出现乱码

    asp.net中在用ajax格式传递数据到aspx页面时有时会出现乱码,很是疑惑,不要走开接下来介绍解决方法,感兴趣的朋友可以了解下...2021-09-22
  • 解决PHP中文乱码的4项小技巧

    PHP程序设计中中文编码问题曾经困扰很多人,导致这个问题的原因其实很简单,每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展 ASCII 码,中国的 GB2312-...2016-11-25
  • php 图片水印中文乱码解决方法

    php 图片水印中文乱码解决方法是要转入一款中文字体摩洛哥 以了,如果你在生成水印有中文时,又没载入相关的字体的话,那中文肯定会是乱码的,如果是英语字母那载不载入都没...2016-11-25