美文网首页
JavaMail 中对附件下载的处理

JavaMail 中对附件下载的处理

作者: yuGodddddd | 来源:发表于2019-12-19 09:50 被阅读0次

    在项目中使用 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,以下是效果几乎不明显.

    文档连接: https://javaee.github.io/javamail/docs/api/com/sun/mail/imap/package-summary.html

    相关文章

      网友评论

          本文标题:JavaMail 中对附件下载的处理

          本文链接:https://www.haomeiwen.com/subject/ykxmnctx.html