Java message.getContent()返回字符串的实例,而不是多部分对象

Java message.getContent()返回字符串的实例,而不是多部分对象,java,jakarta-mail,attachment,multipart,pop3,Java,Jakarta Mail,Attachment,Multipart,Pop3,我是java mail的新手,现在我一直在努力从邮件服务器下载附件。我正在使用java mail 1.5.5,我一直在互联网上搜索如何连接到邮件服务器并下载电子邮件和附件,我有以下代码: Properties props = new Properties(); props.put("mail.store.protocol", "pop3"); Session session = Session.getInstance(props); session.setDebug(true); store

我是java mail的新手,现在我一直在努力从邮件服务器下载附件。我正在使用java mail 1.5.5,我一直在互联网上搜索如何连接到邮件服务器并下载电子邮件和附件,我有以下代码:

Properties props = new Properties();
props.put("mail.store.protocol", "pop3");

Session session = Session.getInstance(props);
session.setDebug(true);

store = session.getStore();
store.connect("my.mail.server", "myusername", "mypassword");
folder = store.getDefaultFolder().getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();

for (int i = 0; i < messages.length; ++i) {
    System.out.println("MESSAGE #" + (i + 1) + ":");
    Message msg = messages[i];

    System.out.println(msg.getContent().getClass());
    System.out.println(msg.getDisposition());
    System.out.println(msg.getFileName());
    System.out.println(msg.getContentType());
    System.out.println(msg.getFrom());
    System.out.println(msg.getReceivedDate());
    System.out.println(msg.getReplyTo());
    System.out.println(msg.getSentDate());
}
我不确定,但我是否至少应该收到邮件的“发件人”或“发送日期”?为什么这些字段是空的?我做错了什么

消息的内容是一种
字符串

请告诉我哪里做错了,谢谢

编辑:

以下是调试日志:

Loading javamail.default.providers from jar:file:/D:/Workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/my_web/WEB-INF/lib/javax.mail-1.5.5.jar!/META-INF/javamail.default.providers
DEBUG: loading new provider protocol=imap, className=com.sun.mail.imap.IMAPStore, vendor=Oracle, version=null
DEBUG: loading new provider protocol=imaps, className=com.sun.mail.imap.IMAPSSLStore, vendor=Oracle, version=null
DEBUG: loading new provider protocol=smtp, className=com.sun.mail.smtp.SMTPTransport, vendor=Oracle, version=null
DEBUG: loading new provider protocol=smtps, className=com.sun.mail.smtp.SMTPSSLTransport, vendor=Oracle, version=null
DEBUG: loading new provider protocol=pop3, className=com.sun.mail.pop3.POP3Store, vendor=Oracle, version=null
DEBUG: loading new provider protocol=pop3s, className=com.sun.mail.pop3.POP3SSLStore, vendor=Oracle, version=null
Loading javamail.default.providers from jar:file:/D:/Workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/my_web/WEB-INF/lib/mail-1.4.7.jar!/META-INF/javamail.default.providers
DEBUG: loading new provider protocol=imap, className=com.sun.mail.imap.IMAPStore, vendor=Oracle, version=null
DEBUG: loading new provider protocol=imaps, className=com.sun.mail.imap.IMAPSSLStore, vendor=Oracle, version=null
DEBUG: loading new provider protocol=smtp, className=com.sun.mail.smtp.SMTPTransport, vendor=Oracle, version=null
DEBUG: loading new provider protocol=smtps, className=com.sun.mail.smtp.SMTPSSLTransport, vendor=Oracle, version=null
DEBUG: loading new provider protocol=pop3, className=com.sun.mail.pop3.POP3Store, vendor=Oracle, version=null
DEBUG: loading new provider protocol=pop3s, className=com.sun.mail.pop3.POP3SSLStore, vendor=Oracle, version=null
DEBUG: getProvider() returning provider protocol=pop3; type=javax.mail.Provider$Type@7e56e2bd; class=com.sun.mail.pop3.POP3Store; vendor=Oracle
DEBUG POP3: mail.pop3.rsetbeforequit: false
DEBUG POP3: mail.pop3.disabletop: true
DEBUG POP3: mail.pop3.forgettopheaders: false
DEBUG POP3: mail.pop3.cachewriteto: false
DEBUG POP3: mail.pop3.filecache.enable: false
DEBUG POP3: mail.pop3.keepmessagecontent: false
DEBUG POP3: mail.pop3.starttls.enable: true
DEBUG POP3: mail.pop3.starttls.required: false
DEBUG POP3: mail.pop3.apop.enable: false
DEBUG POP3: mail.pop3.disablecapa: false
DEBUG POP3: connecting to host "mail.mymail.am", port 110, isSSL false
+OK Dovecot ready.
CAPA
+OK
CAPA
TOP
UIDL
RESP-CODES
PIPELINING
AUTH-RESP-CODE
STLS
USER
SASL PLAIN LOGIN
.
DEBUG POP3: PIPELINING enabled
STLS
+OK Begin TLS negotiation now.
CAPA
+OK
CAPA
TOP
UIDL
RESP-CODES
PIPELINING
AUTH-RESP-CODE
USER
SASL PLAIN LOGIN
.
DEBUG POP3: authentication command trace suppressed
DEBUG POP3: authentication command succeeded
STAT
+OK 73 5815632

你知道你正在阅读的收件箱的实际内容吗?收件箱中的邮件数是否与
邮件
数组的长度匹配?所有消息看起来都一样吗?@JimGarrison是的,我确切知道内容是什么,是的,消息的数量与消息数组的长度匹配,当我尝试打印
msg.getContent()时,它们看起来都一样
。这是消息内容的起始行:
这是MIME格式的多部分消息------=_NextPart_000_0042_01D060A9.DEB81590内容类型:文本/普通;charset=“us ascii”内容传输编码:7bit
您使用的是什么版本的JavaMail?您使用的是哪台POP3服务器?表演什么?请注意,中有许多其他帮助和示例。调试日志中必须有更多帮助和示例,因为您发布的内容没有显示任何试图从服务器读取任何消息的行为。您知道正在读取的收件箱的实际内容吗?收件箱中的邮件数是否与
邮件
数组的长度匹配?所有消息看起来都一样吗?@JimGarrison是的,我确切知道内容是什么,是的,消息的数量与消息数组的长度匹配,当我尝试打印
msg.getContent()时,它们看起来都一样
。这是消息内容的起始行:
这是MIME格式的多部分消息------=_NextPart_000_0042_01D060A9.DEB81590内容类型:文本/普通;charset=“us ascii”内容传输编码:7bit
您使用的是什么版本的JavaMail?您使用的是哪台POP3服务器?表演什么?请注意,中有许多其他帮助和示例。调试日志中必须有更多帮助和示例,因为您发布的内容没有显示从服务器读取任何消息的任何尝试。
Loading javamail.default.providers from jar:file:/D:/Workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/my_web/WEB-INF/lib/javax.mail-1.5.5.jar!/META-INF/javamail.default.providers
DEBUG: loading new provider protocol=imap, className=com.sun.mail.imap.IMAPStore, vendor=Oracle, version=null
DEBUG: loading new provider protocol=imaps, className=com.sun.mail.imap.IMAPSSLStore, vendor=Oracle, version=null
DEBUG: loading new provider protocol=smtp, className=com.sun.mail.smtp.SMTPTransport, vendor=Oracle, version=null
DEBUG: loading new provider protocol=smtps, className=com.sun.mail.smtp.SMTPSSLTransport, vendor=Oracle, version=null
DEBUG: loading new provider protocol=pop3, className=com.sun.mail.pop3.POP3Store, vendor=Oracle, version=null
DEBUG: loading new provider protocol=pop3s, className=com.sun.mail.pop3.POP3SSLStore, vendor=Oracle, version=null
Loading javamail.default.providers from jar:file:/D:/Workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/my_web/WEB-INF/lib/mail-1.4.7.jar!/META-INF/javamail.default.providers
DEBUG: loading new provider protocol=imap, className=com.sun.mail.imap.IMAPStore, vendor=Oracle, version=null
DEBUG: loading new provider protocol=imaps, className=com.sun.mail.imap.IMAPSSLStore, vendor=Oracle, version=null
DEBUG: loading new provider protocol=smtp, className=com.sun.mail.smtp.SMTPTransport, vendor=Oracle, version=null
DEBUG: loading new provider protocol=smtps, className=com.sun.mail.smtp.SMTPSSLTransport, vendor=Oracle, version=null
DEBUG: loading new provider protocol=pop3, className=com.sun.mail.pop3.POP3Store, vendor=Oracle, version=null
DEBUG: loading new provider protocol=pop3s, className=com.sun.mail.pop3.POP3SSLStore, vendor=Oracle, version=null
DEBUG: getProvider() returning provider protocol=pop3; type=javax.mail.Provider$Type@7e56e2bd; class=com.sun.mail.pop3.POP3Store; vendor=Oracle
DEBUG POP3: mail.pop3.rsetbeforequit: false
DEBUG POP3: mail.pop3.disabletop: true
DEBUG POP3: mail.pop3.forgettopheaders: false
DEBUG POP3: mail.pop3.cachewriteto: false
DEBUG POP3: mail.pop3.filecache.enable: false
DEBUG POP3: mail.pop3.keepmessagecontent: false
DEBUG POP3: mail.pop3.starttls.enable: true
DEBUG POP3: mail.pop3.starttls.required: false
DEBUG POP3: mail.pop3.apop.enable: false
DEBUG POP3: mail.pop3.disablecapa: false
DEBUG POP3: connecting to host "mail.mymail.am", port 110, isSSL false
+OK Dovecot ready.
CAPA
+OK
CAPA
TOP
UIDL
RESP-CODES
PIPELINING
AUTH-RESP-CODE
STLS
USER
SASL PLAIN LOGIN
.
DEBUG POP3: PIPELINING enabled
STLS
+OK Begin TLS negotiation now.
CAPA
+OK
CAPA
TOP
UIDL
RESP-CODES
PIPELINING
AUTH-RESP-CODE
USER
SASL PLAIN LOGIN
.
DEBUG POP3: authentication command trace suppressed
DEBUG POP3: authentication command succeeded
STAT
+OK 73 5815632