在项目中使用 JavaMail 作为邮件核心库,但是一直遇到一个比较头疼的问题,当邮件中存在附件时,此封邮件加载速度很慢,最高时之后 80k/s.

通过 log 打印看出,当获取附件时,获取一段之后等待一段时间在获取另一端.导致 io 开销过大,等待网络读取时间过长.

相关日志如下:

O24 FETCH 276 (BODY[1.2]<229376.16384>)

276 FETCH (BODY[1.2]<229376> {16384}

O24 OK Fetch completed

O25 FETCH 276 (BODY[1.2]<245760.16384>)

276 FETCH (BODY[1.2]<245760> {16384}

O25 OK Fetch completed

根据此现象大概能够判断到问题就是分段下载导致的.经过一番苦苦查找.功夫不负有心人,在JavaMail API 的文档的 imap 下面中找到这么一个配置

mail.imap.partialfetch boolean Controls whether the IMAP partial-fetch capability should be used. Defaults to true.

说是否开启 IMAP 的分段加载功能,并且默认是开启的.

在 Properties 中设置此配置为 false.

在进行打开此封邮件的 24M 附件,加载速度控制在了 30s 左右,对比之前的接近 30 分钟,算是几乎解决了这个问题.

这个配置只有在超大附件时效果及其明显,附件在 100k,以下是效果几乎不明显.

java 读取 邮件 附件,JavaMail 中对附件下载的处理相关推荐

  1. JAVA读取邮件 [AUTH] Username and password not accepted

    此处记录一下 在用java读取邮件的时候,会有 [AUTH] Username and password not accepted 错误 原因: 本文中使用google邮箱,是因为密码需要授权码登录并 ...

  2. java 读取集合到流中_Java 10:将流收集到不可修改的集合中

    java 读取集合到流中 Java 10引入了几种新方法来促进不可修改集合的创建. List.copyOf , Set.copyOf和Map.copyOf方法从现有实例创建新的集合实例. 例如: Li ...

  3. 原生java读取properties与spring中@value、@ConfigurationProperties读取配置文件

    原生java读取properties与spring中@value.@ConfigurationProperties读取配置文件 1.properties类 Properties 继承于 Hashtab ...

  4. java 发邮件 简化JavaMail Commons-Email 抄送

    一:Quick Start 通过SimpleEmail发送邮件 1 java.lang.Object 2   org.apache.commons.mail.Email 3       org.apa ...

  5. java读取文件 路径_Java中的获取文件的物理绝对路径,和读取文件

    获取文件的绝对路径,读取该文件 一.文件目录打印图 下面的文件目录图,是项目中文件的位置信息:下面的例子是按照这个图来演示的. . |-- java | |-- ibard | | |-- demo1 ...

  6. java读取图片、PDF中图片上的文字

    读取图片上的文字 提示:本文是基于tess4j 文章目录 读取图片上的文字 前言 一.tess4j是什么? 二.使用步骤 1.POM引入库 2.实例代码 总结 前言 总是有一些与众不同的需求在等着研发 ...

  7. Java 读取Word文档中的文本内容

    这篇文章将介绍如何使用Free Spire.Doc for Java组件在Java应用程序中读取Word文档的文本内容.Free Spire.Doc for Java提供了两种方法来读取Word文档中 ...

  8. java读取局域网共享文件夹中文件并保存到本地文件夹

    在磁盘新建一个文件夹,右击文件夹属性,点击共享 点击网络和共享中心 设置文件夹可访问权限 到此就可以用本地ip加文件夹名称访问了,同局域网也可以通过改地址访问 文件夹的名称来自这张图的 网络路径 如果 ...

  9. java 读取邮件正文_JavaMail入门第五篇 解析邮件

    上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类 ...

最新文章

  1. insight切换窗口 source_Source Insight函数调用关系显示设置
  2. linux多路径策略配置,linux 多路径配置
  3. [转] android自动化之MonkeyRunner测试环境配置(一)
  4. 如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数
  5. Matplotlib基础全攻略
  6. Mysql 5.7 的‘虚拟列’是做什么?
  7. 【Java】一例贯通Java基础语法
  8. dat14-memcached
  9. 这把“锁”不简单,让你畅游数字世界
  10. 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)...
  11. 解决Dev c++不能调试问题
  12. mysql数据库备份注意,Tips: MySQL数据库使用mysqldump备份恢复时的注意事项
  13. 深度学习 检测异常_深度学习用于异常检测:全面调查
  14. 游戏必要的清屏实现以及闪烁原因的详细解释
  15. 苹果系统摩尔庄园是什么服务器,摩尔庄园手游服务器怎么选 数据互通规则详解...
  16. MySQL(一)-MySQL安装、数据库的创建和操作、CRUD、MySQL常用函数、MD5加密
  17. 通过ScrollView实现滚动效果
  18. 3.4.7nbsp;安迪·格鲁夫
  19. python对excel操作简书_python Excel 写
  20. 车载大屏仪表用什么软件开发的

热门文章

  1. 云现场 | 别等到WiFi断了 才明白云管理网络的重要性
  2. 外卖小哥是怎样炼成的?
  3. 重启报错_Win10蓝屏,提示收集错误信息,反复重启报错
  4. android高德marker添加点击,高德地图上添加marker,给每一个marker添加点击事件。...
  5. adobe怎么统计字数_SEO技能:怎么写站内文章对网站排名更好?
  6. VS Code 切换大小写
  7. linux 环境 RocketMQ 4.8.0 安装、部署控制台
  8. 开发经验分享_01_遇到问题三步走(思路+实战)
  9. 三个不同线程顺序打印ABC十种写法,看到就是赚到!
  10. 08服务器许可证安装向导,08_安装部署GRID许可证服务器.pdf