java - 使用javamail获取附件内容

标签 java jakarta-mail

我正在使用 javamail 来自动处理一些电子邮件。

我设法连接到 pop3 服务器并获取消息。其中一些包含附件。根据电子邮件标题,我能够“预测”我需要获取的附件的文件名。

但我无法获取其内容:(

我有一个函数

public byte[] searchForContent(Part part,String fileName){
    if(part.getFileName()!=null){
        if(part.getFileName().equals(fileName)){
            byte[] content = new byte[part.getSize()];
            part.getInputStream().read(content);
            return content[]
        }
    }
    return null;
}

该函数工作得很好(即:仅当该部分是由 fileName 描述的附件时才返回内容)。但它返回的数组太大了。

下载的附件长256字节,函数返回352字节长的内容。

我认为问题出在标题上,但我不能确定。

您将如何继续仅获取内容?

谢谢。

最佳答案

对于它的值(value),javax.mail.Part.getSize() 的 API 文档说

Note that the size may not be an exact measure of the content size and may or may not account for any transfer encoding of the content. The size is appropriate for display in a user interface to give the user a rough idea of the size of this part.

假设您知道内容的类型,您可能可以从 Part.getContent() 获取它并进行处理。 getContent() 返回一个对象,但如果您知道内容类型,则可以对其进行适当的转换(例如,转换为文本的字符串)。

关于java - 使用javamail获取附件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4219443/

相关文章:

java - 如何设置bundle的编码?

java - 数字谜题解决方案的数字平方和可以进一步优化吗?

java 邮件存储类型 "imap"与 "imaps"

java - 连接到 Outlook.com smtp 服务器时出现 Spring 邮件错误

java - 多线程运行时间计算

java - 为什么这没有打印出所需的输出?

java.lang.NoClassDefFoundError : javax/mail/Authenticator 错误

Java 电子邮件 - 异常服务器不受信任

java - 错误 - trustAnchors 参数必须非空

java - 将 Android 项目导入 eclipse 给了我两个项目