Avatar billede obix Nybegynder
09. marts 2005 - 15:56 Der er 6 kommentarer og
1 løsning

Send mail med vedhæftet fil uden først at gemme filen på disken

Hejsa.

Jeg vil gerne kunne fra mit java program sende mails afsted med en vedhæftet fil i. Den vedhæftede fil kan være enten en tekst fil eller en xml fil. Kan det lade sig gøre?

Jeg har løst det midlertidigt ved først at gemme filen på disken og så bruge følgende.

Multipart mp = new MimeMultipart();

                // Tilføj body teksten
                MimeBodyPart indhold = new MimeBodyPart();

                //indhold.setText(Body, "text/html");
                indhold.setContent(Body, "text/html; charset=ISO-8859-1");

                mp.addBodyPart(indhold);
                // Tilføj attachment
                if (VedhaeftetFil != null) {
                    MimeBodyPart attachment = new MimeBodyPart();
                    attachment.setDataHandler(new DataHandler(new FileDataSource(VedhaeftetFil)));
                    File file = new File(VedhaeftetFil);
                    attachment.setFileName(file.getName());
                    attachment.setHeader("Content-type","text/xml");
                    // Tilføj multipart til message
                    mp.addBodyPart(attachment);
                }
Avatar billede mikkelbm Nybegynder
09. marts 2005 - 18:21 #1
Er ikke helt med. Hvordan vil du vedhæfte en fil der ikke eksisterer ?
Jeg tror vejen frem, er den måde du allerede bruger - har ikke kendskab til andre.

Jeg kan dog se, at DataHander tager en URL med i en constructor overload, men jeg ved ikke om det kan bruges? :

http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/activation/DataHandler.html
Avatar billede arne_v Ekspert
09. marts 2005 - 20:14 #2
Det går hvis man udviser lidt fantasi !

Eksempel:

attachment.setDataHandler(new DataHandler(new MemoryDataSource("Stor tekst ...")));

og:

public class MemoryDataSource implements DataSource {
    private String data;
    public MemoryDataSource(String data) {
        this.data = data;
    }
    public String getContentType() {
        return "text/plain";
    }
    public InputStream getInputStream() throws IOException {
        return new ByteArrayInputStream(data.getBytes());
    }
    public String getName() {
        return "pseudo.txt";
    }
    public OutputStream getOutputStream() throws IOException {
        return null;
    }
}
Avatar billede mikkelbm Nybegynder
09. marts 2005 - 20:16 #3
Ja, det var sgu egentlig smart, Arne. Det havde jeg ikke lige tænkt på :)
Avatar billede obix Nybegynder
10. marts 2005 - 08:56 #4
Jamen tak for svaret det er implementeret og det fungerer jo perfekt. Giver du lige et svar?
Avatar billede arne_v Ekspert
10. marts 2005 - 10:34 #5
kommer her
Avatar billede arne_v Ekspert
10. april 2005 - 18:00 #6
så mangler du bare lige at acceptere
Avatar billede obix Nybegynder
11. april 2005 - 08:20 #7
Sorry. Men tak for reminderen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester