2016-05-06 10 views
0

私は、入力ストリームからのJavaMailのMimeMessageを作成します。telnetを使用しているときにMimeMessageが空ですか?

MimeMessage message = new MimeMessage(session, data); 
Object content = message.getContent(); 
log.debug("content: "+content); 

私はコンテンツオブジェクトは、電子メールのテキストを含む電子メールを送信するためにサンダーバードを使用する場合。

しかし、メールを送信するためにtelnetを使用すると、コンテンツオブジェクトは空です。

220 192.168.2.3 ESMTP SubEthaSMTP 3.1.7 
mail from:[email protected] 
250 Ok 
rcpt to:[email protected] 
250 Ok 
data 
354 End data with <CR><LF>.<CR><LF> 
test1 
test2 
test3 
. 
250 Ok 
quit 
221 Bye 


Connection to host lost. 

しかし私は、手動で入力ストリームを読み取ることによって、コンテンツを取得することができます:

public String convertStreamToString(InputStream is) { 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return sb.toString(); 
} 

はそれはで、MimeMessageとするときconvertStreamToStringを使用するを使用するときを検出することは可能ですか?

答えて

1

SMTP経由で正しくメールを送信していません。メッセージデータは通常、キーと値のペアのセットであり、その後に改行が続き、その後に内容が続きます。あなたのメッセージが内容がないと言っている理由は、あなたのデータが全てのヘッダーであるように見えるからです。 Telnetセッションがどのように見えるはずです

220 192.168.2.3 ESMTP SubEthaSMTP 3.1.7 
mail from:[email protected] 
250 Ok 
rcpt to:[email protected] 
250 Ok 
data 
354 End data with <CR><LF>.<CR><LF> 
From: Test <[email protected]> 
To: Burb <[email protected]> 
Subject: My fantastic message 

test1 
test2 
test3 
. 
250 Ok 
quit 
221 Bye 
+1

乾杯@AlBlue、私はメールコマンドをtelnetで接続するために来るとき少し錆びたように見えます。私はちょうどそれをデータセクションにメールヘッダーを追加してショットを与え、それはすぐに働いた! –

関連する問題