gpt4 book ai didi

IMAP - javax.mail。 - 只获取没有附件的 body

转载 作者:行者123 更新时间:2023-12-04 15:49:09 24 4
gpt4 key购买 nike

我正在尝试使用 javax.mail API 开发 IMAP 电子邮件客户端。我已经能够毫无问题地联系服务器、获取电子邮件、附件和其他操作。

但是,在用户想要查看附件以提高性能之前,我们不希望获取附件。这意味着我们需要信息来表明电子邮件是否有附件,如果有,则是文件名和大小,但会不是 将电子邮件的实际内容发送给我。但是,我无法在 API 描述中找到只返回多部分内容的方法。

有没有一种方法可以只获取附件的正文和详细信息,而不能获取实际的附件?

谢谢,
阿拉文

最佳答案

方法getContent()javax.Part返回

the content as a Java object. The type of the returned object is of course dependent on the content itself. For example, the object returned for "text/plain" content is usually a String object. The object returned for a "multipart" content is always a Multipart subclass.



http://download.oracle.com/javaee/6/api/javax/mail/Part.html#getContent%28%29

如果 Message (这是一个 Part )包含附件,getContent 方法将返回一个 Multipart目的。此外,您可以通过 getContentType 了解部件的 MIME 类型。 .

文档中缺少的信息是这个 MultiPart getContent 返回的对象只是消息结构的空表示。各内容 PartMultipart只会在您特别要求时从服务器获取。例如,解析多部分 Message你会这样做:
if( p.isMimeType("multipart/*") ) {

Multipart mp = (Multipart)p.getContent();
// the content was not fetched from the server

// parse each Part
for (int i = 0; i < mp.getCount(); i++) {
Part inner_part = mp.getBodyPart(i)

if( inner_part.isMimeType("text/plain") ) {
String text = inner_part.getText();
// the content of this Part was fetched from the server
}
}
}

还需要考虑的是,为了获得最佳性能,您应该从服务器批量获取正文结构信息,以收集要解析的消息(请参阅 http://download.oracle.com/javaee/6/api/javax/mail/FetchProfile.Item.html#CONTENT_INFO )。如果没有,每个
Multipart mp = (Multipart)p.getContent();
将导致向服务器请求获取正文结构。如果 FetchProfile使用这种方法,消息集合的主体结构将仅通过一个请求获取。如果您在 session 上激活 Debug模式,您可以在日志中看到对服务器的请求:
session.setDebug(true);

这就是说,要获取附件的大小和文件名,只需使用 Part.getSize()Part.getFileName() , 分别。

关于IMAP - javax.mail。 - 只获取没有附件的 body ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1921981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com