2011-11-30 4 views
0

나는 Android GMail 클라이언트 애플리케이션을 작성 중이다. 이 메시지를 생성 할 때JavaMail 메시지 getHeader() 버그

, 나는 이런 식으로 헤더를 추가

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() 호출 전에 중단 점을 설정할 때 헤더 값을 conrently 반환합니다.

내 소스 코드 :

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을 통해 올바르게 헤더 정보를 반환하지 않습니다? 요청에 대해 서 v가 리턴하는 것을 정확히 보려면 ​​프로토콜 추적을 볼 수 있습니다.

또한, (예컨대)

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

을 사용하여 헤더가 있는지 전체 메시지를 작성하려고. 그럴 경우 프로토콜 추적에서 getHeader 호출에 대해 반환되지 않는다고 표시하면 서버의 버그입니다. 이 경우 JavaMail FAQ entry for how to work around such server bugs을 참조하십시오.