10. januar 2004 - 18:59Der er
46 kommentarer og 1 løsning
Javamail med attachment
Jeg har et mærkeligt problem med tomcat, den vil ikke lige sende en mail med en vedhæftet fil. Bruger jeg tomcat fra netbeans vil den gerne sende en vedhæftet fil med. Det er samme jsp fil der bliver kørt, så der er ingen forskel i koden. Tomcat fra netbeans må gøre et eller andet som almindelig tomcat ikke har med. Netbeans starter tomcat med denne kommando. C:\j2sdk\j2sdk1.4.2\jre\bin\java -classpath "C:\j2sdk\netbeans3.5\tomcat406\bin\bootstrap.jar";"C:\j2sdk\j2sdk1.4.2\lib\tools.jar" -Dcatalina.home="C:\j2sdk\netbeans3.5\tomcat406" -Dcatalina.base="C:\Documents and Settings\Administrator\.netbeans\3.5\tomcat406_base" org.apache.catalina.startup.Bootstrap "start"
Fejl beskeden som jeg får er: Messaging fejl : javax.mail.SendFailedException: Sending failed; nested exception is: class javax.mail.MessagingException: IOException while sending message; nested exception is: java.io.FileNotFoundException: New Text Document.txt (The system cannot find the file specified)
Hvad hulan er der galt ? Har i info nok, ellers må i bare sige til så paster jeg glædeligt :)
Du forsøger at attache en fil "New Text Document.txt" ?
Den ligger et sted.
Hvis du prøvede med "C:/et/eller/andet/dir/New Text Document.txt" kunne du be elle rafkræfte en hypoteste om at det er fordi standalone Tomcat kigger i det forkerte directory.
Ahhh, nu forstår jeg. Meget mærkeligt hvis jeg laver / i steder for \ sender den en mail med vedhæftet til, men den omdøber filnavnet. Hvis jeg fx valgte c:/database.data omdøbers den til C__database.data. Det er lidt tættere på noger der virker nu :-)
Fra Netbeans kunne jeg sagtens bruge \ og den omdøbte heller ikke
"c:\\database.data" eller "c:\database.data" virker ikke String file = request.getParameter("file").replace('\\','/'); Virker heller ikka da jeg kun får fil navnnet og ikke hele stien
"c:\\database.data" eller "c:\database.data" sender mig ned i else(3) delen og ikke if else(2) ? "c:/database.data" går rigtignok ind i if delen (1) } else if (file.indexOf("\\") != -1) { String fileName = file.substring(file.lastIndexOf("\\")+1); attachment.setFileName(fileName); out.print(2); } else { attachment.setFileName(file); out.print(3); }
har kigget lidt på det med at file fields i html. Mit ser sådan her ud <form name="form" method="get" action="mailattach.jsp" enctype="multipart/form-data"> har prøvet med flere forskellige enctypes men uden held
Bruger kun get for at teste hvad der bliver sendt med
Altså: - der genereres en HTML form - client browser en fil på hans PC - submit sender filnavn + fil indhold til server - server gemmer fil i upload/temp dir - server attacher fil til email - server sender email
Det er den rigtige måde.
Men placering på client PC skal ikke sendes op til server.
Der er lavet masser af web javamail, men ikke så meget med attachments !
Synes godt om
Ny brugerNybegynder
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.