# EMails in JavaDB speichern



## Audio Anarchy (17. Nov 2008)

Hallo Forum, 

ich möchte meine Empfangenen Emails in der JavaDB ablegen. Meine Idee wäre die Mails in ein Byte-Array umzuwandeln und dann als BLOB in die Datenbank zu speichern. 

Leider bietet mir die Java Mail API keine ".toByteArray" oder ".getBytes" Methode für die einzelnen Messages an. 

Hat jemand eine Idee wie ich das Problem geschickt lösen könnte?

Danke


----------



## HoaX (17. Nov 2008)

Message#writeTo(OutputStream)


----------



## Audio Anarchy (17. Nov 2008)

hola, 

danke für den hinweis. 

Ich erstelle dann also einen Outputstream und schreibe diesen dann in ein Byte Array, oder?
Also ungefähr so:


```
private byte[] messageAsBytes;
        private OutputStream out;


        message.writeTo(out);
        out.write(messageAsBytes);
```


Edit: Wie erzeuge ich aus einem Byte Array eigentlich wieder ein Message Objekt?


----------



## HoaX (18. Nov 2008)

nein, mit out.write(messageAsBytes) würdest du das array in den stream schreiben, nicht umgedreht. nimm einen ByteArrayOutputStream. da kannst du nach dem Message#writeTo einfach outputstream.toByteArray() aufrufen.

zum wiederherstellen der message aus einem inputstream hat Message einen extra konstruktor.


----------



## Audio Anarchy (18. Nov 2008)

Vielen Dank für die Hilfe. Ich habe das jetzt folgendermassen gelöst: 


```
curMail = DBServiceFactory.getInstance().getSingleEmail(longMailId); //Mail aus Datenbank holen
                ByteArrayInputStream bais = new ByteArrayInputStream(curMail.getMail()); //Inputstream
                MimeMessage msg  = new MimeMessage((javax.mail.Session) null, bais); //Message Erzeugen
```


----------

