java 读取 邮件 附件,JavaMail 中对附件下载的处理
在项目中使用 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 中对附件下载的处理相关推荐
- JAVA读取邮件 [AUTH] Username and password not accepted
此处记录一下 在用java读取邮件的时候,会有 [AUTH] Username and password not accepted 错误 原因: 本文中使用google邮箱,是因为密码需要授权码登录并 ...
- java 读取集合到流中_Java 10:将流收集到不可修改的集合中
java 读取集合到流中 Java 10引入了几种新方法来促进不可修改集合的创建. List.copyOf , Set.copyOf和Map.copyOf方法从现有实例创建新的集合实例. 例如: Li ...
- 原生java读取properties与spring中@value、@ConfigurationProperties读取配置文件
原生java读取properties与spring中@value.@ConfigurationProperties读取配置文件 1.properties类 Properties 继承于 Hashtab ...
- java 发邮件 简化JavaMail Commons-Email 抄送
一:Quick Start 通过SimpleEmail发送邮件 1 java.lang.Object 2 org.apache.commons.mail.Email 3 org.apa ...
- java读取文件 路径_Java中的获取文件的物理绝对路径,和读取文件
获取文件的绝对路径,读取该文件 一.文件目录打印图 下面的文件目录图,是项目中文件的位置信息:下面的例子是按照这个图来演示的. . |-- java | |-- ibard | | |-- demo1 ...
- java读取图片、PDF中图片上的文字
读取图片上的文字 提示:本文是基于tess4j 文章目录 读取图片上的文字 前言 一.tess4j是什么? 二.使用步骤 1.POM引入库 2.实例代码 总结 前言 总是有一些与众不同的需求在等着研发 ...
- Java 读取Word文档中的文本内容
这篇文章将介绍如何使用Free Spire.Doc for Java组件在Java应用程序中读取Word文档的文本内容.Free Spire.Doc for Java提供了两种方法来读取Word文档中 ...
- java读取局域网共享文件夹中文件并保存到本地文件夹
在磁盘新建一个文件夹,右击文件夹属性,点击共享 点击网络和共享中心 设置文件夹可访问权限 到此就可以用本地ip加文件夹名称访问了,同局域网也可以通过改地址访问 文件夹的名称来自这张图的 网络路径 如果 ...
- java 读取邮件正文_JavaMail入门第五篇 解析邮件
上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类 ...
最新文章
- insight切换窗口 source_Source Insight函数调用关系显示设置
- linux多路径策略配置,linux 多路径配置
- [转] android自动化之MonkeyRunner测试环境配置(一)
- 如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数
- Matplotlib基础全攻略
- Mysql 5.7 的‘虚拟列’是做什么?
- 【Java】一例贯通Java基础语法
- dat14-memcached
- 这把“锁”不简单,让你畅游数字世界
- 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)...
- 解决Dev c++不能调试问题
- mysql数据库备份注意,Tips: MySQL数据库使用mysqldump备份恢复时的注意事项
- 深度学习 检测异常_深度学习用于异常检测:全面调查
- 游戏必要的清屏实现以及闪烁原因的详细解释
- 苹果系统摩尔庄园是什么服务器,摩尔庄园手游服务器怎么选 数据互通规则详解...
- MySQL(一)-MySQL安装、数据库的创建和操作、CRUD、MySQL常用函数、MD5加密
- 通过ScrollView实现滚动效果
- 3.4.7nbsp;安迪·格鲁夫
- python对excel操作简书_python Excel 写
- 车载大屏仪表用什么软件开发的
热门文章
- 云现场 | 别等到WiFi断了 才明白云管理网络的重要性
- 外卖小哥是怎样炼成的?
- 重启报错_Win10蓝屏,提示收集错误信息,反复重启报错
- android高德marker添加点击,高德地图上添加marker,给每一个marker添加点击事件。...
- adobe怎么统计字数_SEO技能:怎么写站内文章对网站排名更好?
- VS Code 切换大小写
- linux 环境 RocketMQ 4.8.0 安装、部署控制台
- 开发经验分享_01_遇到问题三步走(思路+实战)
- 三个不同线程顺序打印ABC十种写法,看到就是赚到!
- 08服务器许可证安装向导,08_安装部署GRID许可证服务器.pdf