1

IMAPサーバーに正常に接続してログインし、IMAPフェッチコマンドを使用して電子メールのリストを取得できます。ただし、完全なヘッダーを含む単一の電子メールを取得しようとすると、問題が発生します。

これは私が取得しているスタックトレースです:

Exception in thread "main" org.apache.commons.net.MalformedServerReplyException: Received unexpected IMAP protocol response from server: 'Return-Path: <[removed]>'.
at org.apache.commons.net.imap.IMAPReply.getReplyCode(IMAPReply.java:128)
at org.apache.commons.net.imap.IMAPReply.getReplyCode(IMAPReply.java:93)
at org.apache.commons.net.imap.IMAP.__getReply(IMAP.java:120)
at org.apache.commons.net.imap.IMAP.__getReply(IMAP.java:90)
at org.apache.commons.net.imap.IMAP.sendCommandWithID(IMAP.java:225)
at org.apache.commons.net.imap.IMAP.sendCommand(IMAP.java:238)
at org.apache.commons.net.imap.IMAP.sendCommand(IMAP.java:263)
at org.apache.commons.net.imap.IMAP.doCommand(IMAP.java:276)
at org.apache.commons.net.imap.IMAPClient.fetch(IMAPClient.java:339)

上記のスタックトレースを生成する私のコードは次のとおりです。

public static void main(String[] args) throws Exception {
    IMAPClient client = new IMAPClient();
    client.connect(SERVER);
    client.login(USERNAME, PASSWORD);
    client.select("INBOX");
    client.fetch("1", "body[header]");
}

commons-net-3.1を使用しています

telnet経由でIMAPサーバーに接続し、同じコマンドを発行すると、次のような結果になります(データの一部をアンダースコアで省略しました)。

08 fetch 1 body[header]
* 1 FETCH (BODY[HEADER] {608}
Return-Path: <____@____.com>
X-Original-To: ____@____.com
Delivered-To: ____@____.com
Received: from ____.____.com (unknown [____])
    by ____.____.____ (Postfix) with ESMTP id 1926514D20
    for <____@____.com>; Mon,  1 Feb 2010 16:52:36 +1100 (EST)
Date: Mon, 1 Feb 2010 16:52:35 +1100 (EST)
From: ____@____.com
To: ____@____.com
Message-ID: <__________________________@_____>
Subject: ____
MIME-Version: 1.0
Content-Type: multipart/mixed; 
    boundary="----=_Part_13575_1460176524.1265003555921"

)
* 79690 EXISTS
* 13 RECENT
08 OK Fetch completed.

メールを表示するために正しい方法(フェッチ)を使用していますか?私がどこで間違っているのかについての手がかりはありますか?

4

1 に答える 1

1

これが fetch の正しい使い方です (メーリング リストによると)。これは commons-net のバグです。

https://issues.apache.org/jira/browse/NET-467

于 2012-05-25T23:43:20.897 に答える