【问题标题】:How to decode an attachment chunked filename in javamail?如何在javamail中解码附件分块文件名?
【发布时间】:2017-12-21 17:57:41
【问题描述】:

我试图弄清楚如何管理文件名分块的邮件附件。我在使用 javamail 1.5.1 的 java 1.6 上,我的代码可以管理所有类型的邮件,但是当我从特定地址收到一封邮件时(我无法与那些人交谈),它不会正确导入一些附件。当我用记事本打开这些附件(假设这个名字是没有扩展名的文件名)时,我发现:

Content-Type: application/octet-stream; 
    name*0="filename without extension"; name*1=.extension
Content-Transfer-Encoding: base64
Content-Disposition: attachment; 
    filename*0="filename without extension"; filename*1=.extension

base64 内容之前。我试图搜索类似的问题,但我有确切的文件名,但它被拆分了,BodyPart.getFilename() 方法返回 null。我正在考虑获取整个标题并继续努力。

【问题讨论】:

    标签: java email jakarta-mail


    【解决方案1】:

    您的 Javamail 版本应该支持此功能。

    System.setProperty("mail.mime.decodeparameters", "true");
    

    更多信息,请在javax.mail.internet的包文档中搜索“RFC 2231”:

    https://docs.oracle.com/javaee/6/api/javax/mail/internet/package-summary.html

    【讨论】:

    • 当循环找到附件但没有帮助时,我尝试设置这些属性(也 decodefilename),getfilename 仍然返回 null。
    • @Frattak 这些是系统属性。您需要在程序开始时设置它们,而不仅仅是在找到附件时 - 因为解析已经完成,此时可能为时已晚。
    • 从 JavaMail 1.5.0 开始默认启用 RFC 2231 支持。您确定您使用的是 JavaMail 1.5.1 吗?此外,您可能希望升级到当前版本 JavaMail 1.6.0
    • 为我工作!谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-05-13
    • 2013-05-19
    • 2011-08-09
    • 1970-01-01
    • 2013-01-27
    • 2020-01-01
    • 2016-11-21
    • 1970-01-01
    相关资源
    最近更新 更多