2016-05-06 145 views
0

我從InputStream中創建的JavaMail的MimeMessage:使用telnet時MimeMessage爲空?

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

當我使用雷鳥發送內容對象包含電子郵件文本的電子郵件。

但是,當我使用telnet發送電子郵件的內容對象是空的。

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:

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. 

我不過可以通過手動讀取的InputStream獲取內容?

回答

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,我似乎有點生疏,當我談到遠程登錄郵件命令。我剛剛在數據部分添加了郵件標題,並立即開始工作! –