0

私が抱えていたいくつかの電子メールの問題をテストするための短いテストを書こうとしています。

テストメール (個人情報を一部削除):

Received: from <address> (<ip>) by
<address> (<ip>) with Microsoft SMTP
Server (TLS) id <ip>; <time>
Received: from <address> (<ip>) by
<address> (<ip>) with mapi id
<ip>; <time>
From: <name> <<mail>>
To: <name> <<mail>>
Subject: =?iso-8859-1?Q?<subject>?=
Thread-Topic: =?iso-8859-1?Q?<subject>?=
Thread-Index: <index>==
Date: <time>
Message-ID: <<message-id>>
References: <<references-id>>
<<references-id>>
<<references-id>>
In-Reply-To: <<references-id>>
Accept-Language: sv-SE, en-US
Content-Language: sv-SE
X-MS-Exchange-Organization-AuthAs: Internal
X-MS-Exchange-Organization-AuthMechanism: 04
X-MS-Exchange-Organization-AuthSource: <<address>>
X-MS-Has-Attach:
X-MS-Exchange-Organization-SCL: -1
X-MS-Exchange-Inbox-Rules-Loop: <address>
X-MS-TNEF-Correlator:
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=1">
</head>
<body>
text, nothing special a bit of css and some html code
</body>
</html>

私のテストコード:

Session s = Session.getDefaultInstance(new Properties());
mime = EmailTest.class.getResourceAsStream("/mailtests/parsehtmlmail1.mime");
MimeMessage msg = new MimeMessage(s, mime);

InputStream is = msg.getRawInputStream();
System.out.println(is.read());

if(msg.getContentType().toLowerCase().startsWith("text/html")){
    if(msg.isMimeType("text/html")){
         if(msg.getContent() instanceof String) {
             System.out.println("Here");
             System.out.println(msg.getContent().toString());
             InputStream is2 = msg.getInputStream();
             System.out.println(is2.read());
         }
    }
}

結果:

-1
Here

-1

だから私の問題は、私が何をしようとしても、空のコンテンツ文字列または空の入力ストリームになってしまうことです。

それで、私はこれを間違って何をしていますか?それとも、私が理解できないものですか?MIME タイプが text/html であるため、inputstream を使用できるはずだという印象を受けました。

このエラーは、テスト ファイルと関係があるのでしょうか? メールをコピーして、「parsehtmlmail1.mime」という名前のファイルに貼り付けただけです。もしそうなら、どうして getContentType() などを使うことができますか?

4

1 に答える 1

-1

JavaMail デモ プログラム msgshow.java (ここからダウンロード) を使用してテスト メッセージ ファイルを読み取り、ファイル形式が正しいことを確認します。(コピー/貼り付けは、適切な形式のファイルを作成するための最も信頼できる方法ではありません。) "java msgshow -m

JavaMail FAQには、追加のデバッグのヒントがあります。

于 2013-06-19T21:11:16.107 に答える