JavaMail Message getHeader () ошибка - PullRequest
       8

JavaMail Message getHeader () ошибка

0 голосов
/ 30 ноября 2011

Я пишу клиентское приложение Android GMail.

Когда оно создает сообщение, я добавляю к нему заголовок, например:

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 на моем ПК.Однако, когда я позже пытаюсь получить информацию заголовка, это становится очень странным.

Когда я звоню

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]);
}

1 Ответ

0 голосов
/ 01 декабря 2011

Возможно, Gmail неправильно возвращает информацию заголовка через IMAP? Возможно, вы захотите посмотреть трассировку протокола, чтобы точно узнать, что сервер возвращает по вашему запросу.

Кроме того, попробуйте выписать все сообщение, используя (например,)

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

и посмотрите, есть ли там заголовок. Если это так, и трассировка протокола показывает, что он не возвращается для вызова getHeader, это ошибка на сервере. В этом случае см. Запись JavaMail FAQ о том, как обойти такие ошибки сервера .

...