2011-11-30 62 views
0

我正在編寫Android GMail客戶端應用程序。JavaMail消息getHeader()bug

當它創建了一個消息,我一個頭添加到它:

MimeMessage msg = new MimeMessage(session); 
msg.setFrom(new InternetAddress(username)); 
msg.setSubject(subject); 
msg.setText(message); 
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); 

long time = someTime; 
msg.addHeader("My_Header", Long.toString(time)); 

//IMAPFolder f declaration & initialization 

    f.open(Folder.READ_WRITE); 
f.addMessages(new Message[]{msg}); 
f.close(true); 

這一切工作正常,我能夠看到正確添加到郵件的標題上觀看我的Gmail帳戶時,我PC。但是,當我稍後嘗試檢索標題信息時,它變得非常奇怪。

當我打電話

String[] str = msg.getHeader("My_Header"); 

getHeader()回報null我是否正在運行的應用程序。但是,當我調試應用程序並在getHeader()調用之前設置斷點時,它會正確返回標頭值。

我的源代碼:

MimeMessage msg = getNextMessage(); 
String subject = msg.getSubject(); 
InternetAddresses to[] = msg.getAllRecipients() 

String when[] = msg.getHeader(GMailClient.TIME_TO_SEND);   
if (when == null) { 
      Log.i(TAG, "Null Header"); 
} else { 
    long time = Long.parseLong(when[0]); 
      Log.i(TAG, "Value retrieved: " + when[0]); 
} 

回答

0

可能Gmail沒有正確地通過IMAP返回頭信息?您可能希望查看協議跟蹤以準確查看服務器爲您的請求返回的內容。

另外,嘗試使用(例如)

msg.writeTo(new FileOutputStream("msg.txt")); 

,看看是否標題是有寫出整個消息。如果是這樣,並且協議跟蹤顯示它沒有爲getHeader調用返回,則它是服務器中的一個錯誤。在這種情況下,請參閱JavaMail FAQ entry for how to work around such server bugs

相關問題