/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
JavaMail, MimeMeaasge, og InputStream
Fra : Thomas Vestergaard


Dato : 28-02-02 15:21

Hej!

Er der nogen, der har erfaring med JavaMail.

Jeg prøver at lave en mailserver.

Dataene som skal blive til en email kommer ind på en Socket via en
InputStream.
Problemet opstår når der skal oprettes et MimeMessage objekt, hvor
contructoren tager en InputStream som parameter.
InputStreamen bliver jo brugt til at kommunikere med klienten i henhold til
SMTP protokellen, så den kan man ikke umiddelbart bruge til constructoren.

Min fremgangsmåde indtil nu har været at samle alt det der kommer på
InputStreamen op i en String.
Hvis jeg så bare på en eller anden måde kan omdanne denne String til en
InputStream er problemet løst.

Jeg har prøvet at skrive String'en ud i en fil. Derefter kan man læse filen
med en FileInputStream, som man med succes kan bruge i MimeMessage'ens
contructor.
Denne fremgangsmåde virker, men er langt fra optimal....

Jeg har også prøvet at skrive til en PipedOutputStream, men det synes ikke
at være muligt at skrive med end 1024 bytes....
Man kan derefter få den ønskede InputStream ved at lave en PipedInputStream,
der tager en PipedOutputStream som parameter.

Jeg er kørt fast
Er der noget der kan bidrage med gode ideer.

-thomas



 
 
Ukendt (28-02-2002)
Kommentar
Fra : Ukendt


Dato : 28-02-02 17:08


"Thomas Vestergaard" <dm35x@ah.dk> skrev i en meddelelse
news:a5ledi$dje$1@sunsite.dk...
> Hej!
>
> Er der nogen, der har erfaring med JavaMail.
>
> Jeg prøver at lave en mailserver.
>
> Dataene som skal blive til en email kommer ind på en Socket via en
> InputStream.
> Problemet opstår når der skal oprettes et MimeMessage objekt, hvor
> contructoren tager en InputStream som parameter.
> InputStreamen bliver jo brugt til at kommunikere med klienten i henhold
til
> SMTP protokellen, så den kan man ikke umiddelbart bruge til constructoren.
>
> Min fremgangsmåde indtil nu har været at samle alt det der kommer på
> InputStreamen op i en String.
> Hvis jeg så bare på en eller anden måde kan omdanne denne String til en
> InputStream er problemet løst.
>

Prøv noget med :

String minstreng = "Dette er en test";

ByteArrayInputStream bis = new ByteArrayInputStream( minstreng.getBytes());
MimeMessage msg = new MimeMessage( bis);
bis.close();

Søren Staun Jørgensen


> Jeg har prøvet at skrive String'en ud i en fil. Derefter kan man læse
filen
> med en FileInputStream, som man med succes kan bruge i MimeMessage'ens
> contructor.
> Denne fremgangsmåde virker, men er langt fra optimal....
>
> Jeg har også prøvet at skrive til en PipedOutputStream, men det synes ikke
> at være muligt at skrive med end 1024 bytes....
> Man kan derefter få den ønskede InputStream ved at lave en
PipedInputStream,
> der tager en PipedOutputStream som parameter.
>
> Jeg er kørt fast
> Er der noget der kan bidrage med gode ideer.
>
> -thomas
>
>



Dennis Thrysøe (01-03-2002)
Kommentar
Fra : Dennis Thrysøe


Dato : 01-03-02 08:07



Thomas Vestergaard wrote:
> Hej!
>
> Er der nogen, der har erfaring med JavaMail.
>
> Jeg prøver at lave en mailserver.
>
> Dataene som skal blive til en email kommer ind på en Socket via en
> InputStream.
> Problemet opstår når der skal oprettes et MimeMessage objekt, hvor
> contructoren tager en InputStream som parameter.
> InputStreamen bliver jo brugt til at kommunikere med klienten i henhold til
> SMTP protokellen, så den kan man ikke umiddelbart bruge til constructoren.
>
> Min fremgangsmåde indtil nu har været at samle alt det der kommer på
> InputStreamen op i en String.
> Hvis jeg så bare på en eller anden måde kan omdanne denne String til en
> InputStream er problemet løst.

InputStreams arbejder med bytes (8 bit), hvor Strings arbejder med
characters (16-bit). Derfor sker der en 'encoding', når man bruger en
String i dit tilfælde.

En bedre idé ville måske være, at opsamle dataene i et bytearray
(byte[]) og så bruge en java.io.ByteArrayInputStream.

Eller, hvis det kan lade sig gøre i den givne situation kunne man også
dekorere den oprindelige InputStream med en anden InputStream du selv
skriver. Denne InputStream kunne så være bevidst om hvornår dens
datagrundlag er slut osv.

> Jeg har prøvet at skrive String'en ud i en fil. Derefter kan man læse filen
> med en FileInputStream, som man med succes kan bruge i MimeMessage'ens
> contructor.
> Denne fremgangsmåde virker, men er langt fra optimal....

Nej, så er det bedre med et bytearray. Bortset fra meget store
datamængder. Der vil det være bedre at hive dataene direkte igennem i
mindre klumper. (F.eks. med en dekoration, som nævnt ovenfor).

-dennis


Thomas Vestergaard (01-03-2002)
Kommentar
Fra : Thomas Vestergaard


Dato : 01-03-02 10:16

Takker for begge svar,
det var en stor hjælp!

"Dennis Thrysøe" <dt@netnord.dk> wrote in message
news:3C7F287E.5040305@netnord.dk...
>
>
> Thomas Vestergaard wrote:
> > Hej!
> >
> > Er der nogen, der har erfaring med JavaMail.
> >
> > Jeg prøver at lave en mailserver.
> >
> > Dataene som skal blive til en email kommer ind på en Socket via en
> > InputStream.
> > Problemet opstår når der skal oprettes et MimeMessage objekt, hvor
> > contructoren tager en InputStream som parameter.
> > InputStreamen bliver jo brugt til at kommunikere med klienten i henhold
til
> > SMTP protokellen, så den kan man ikke umiddelbart bruge til
constructoren.
> >
> > Min fremgangsmåde indtil nu har været at samle alt det der kommer på
> > InputStreamen op i en String.
> > Hvis jeg så bare på en eller anden måde kan omdanne denne String til en
> > InputStream er problemet løst.
>
> InputStreams arbejder med bytes (8 bit), hvor Strings arbejder med
> characters (16-bit). Derfor sker der en 'encoding', når man bruger en
> String i dit tilfælde.
>
> En bedre idé ville måske være, at opsamle dataene i et bytearray
> (byte[]) og så bruge en java.io.ByteArrayInputStream.
>
> Eller, hvis det kan lade sig gøre i den givne situation kunne man også
> dekorere den oprindelige InputStream med en anden InputStream du selv
> skriver. Denne InputStream kunne så være bevidst om hvornår dens
> datagrundlag er slut osv.
>
> > Jeg har prøvet at skrive String'en ud i en fil. Derefter kan man læse
filen
> > med en FileInputStream, som man med succes kan bruge i MimeMessage'ens
> > contructor.
> > Denne fremgangsmåde virker, men er langt fra optimal....
>
> Nej, så er det bedre med et bytearray. Bortset fra meget store
> datamængder. Der vil det være bedre at hive dataene direkte igennem i
> mindre klumper. (F.eks. med en dekoration, som nævnt ovenfor).
>
> -dennis
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste