Why emailE - 1?  emailE must be '>' according to your condition on line 693, or its raw.length.  nextLF will return raw.length if you pass it raw.length.  So I don't think you need to subtract 1.

Actually, the more that I think about this, maybe we can say instead:

  int timeBegin = emailE;
  do {
    int e = nextLF(raw, timeBegin, '>');
    if (e < raw.length && raw[e - 1] == '>')
      timeBegin = e;
    else
      break;
  } while (true);

That way we only scan the string once going forwards, rather than scanning from the end backwards.  Then you can leave the old time parsing code alone and just update its starting point to be timeBegin.