Zdravím konferenci!

Narazil jsem na zajímavý problém při parseování emailů pomocí API JavaMail.
Viz. kód

Part p;  // ... viz. API JavaMail
// ...
Object o = p.getContent();

if (o instanceof InputStream){
  InputStream is = (InputStream)o;
  byte data[]=new byte[is.available()];
  int res=is.read(data);
           
  System.out.println("Nacteno "+res+"  xxx velikost pole "+data.length);
}

Výsledek je dosti překvapivý:
Nacteno 64509  xxx velikost pole 65357

Pokud jsem to zkoušel s FileInputStream nebo s ByteArrayInputStream, tak
to fungovalo správně.
Problém se vyskytuje při použití API JavaMail v případě, že se snažím
vrátit data přílohy.

Co dělám špatně?

Jediné, co mě napadlo je to, že příloha emailu je v base64 a ten input
stream je tedy o několik bytů delší.
Tím to ale nemůže být, protože rozdíl ve velikosti dat by byl daleko
větší 4/3*64509 = 86012.
Tak fakt nevím :-(.

Díky
Fafi

Odpovedet emailem