Miten lähetän Java:lla sähköpostin jossa on koodin tekemä .xml-tiedosto liitteenä?
"java send email attachment" ja plop, valmis koodi @ http://www.jguru.com/faq/view.jsp?EID=30251
Ei mene tolla kun mulla on lähetys koodissa import javax.sql.DataSource;
Koska tarvitsee tallentaa myös tilastot MySQL:n.
try { String host = "server.domain.tld"; String from = "sales@domain.tld"; String to = email; // Get system properties Properties properties = System.getProperties(); // Setup mail server properties.setProperty("smtp.domain.tld", host); // Get the default Session object. Session session = Session.getDefaultInstance(properties); // Define message Message message_email = new MimeMessage(session); message_email.setFrom(new InternetAddress(from)); message_email.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message_email.setSubject(subject); // Send the actual HTML message, as big as you like message_email.setContent( message, "text/html" ); // Create the message part BodyPart messageBodyPart = new MimeBodyPart(); // Fill the message messageBodyPart.setText(message_Text); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); // Part two is attachment messageBodyPart = new MimeBodyPart(); String filename = "license.xml"; Writer source = response.getWriter(); source.write("TEST!"); //Writer out = response.getWriter(); // setup print writer //PrintWriter pw = new PrintWriter( new OutputStreamWriter( ServletActionContext.getResponse().getOutputStream() ) ); // close the print writer which will start the download prompt //pw.close(); //DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source, "text/xml")); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // Put parts in message message_email.setContent(multipart); // Send the message Transport.send(message_email); source.close(); } catch (MessagingException e) { log.error("An error has occurred with sending the email to " + email + ": ", e); }
Eli millä kirjoitan muutujaan source että se toimii seuraavassa?
messageBodyPart.setDataHandler(new DataHandler(source, "text/xml"));
Annat luokan täyden polun esim.,javax.activation.DataSource source = new javax.activation.DataSource(new javax.activation.FileDataSource(attachment));
Ei toimi.
BUILD FAILURE
javax.activation.DataSource is abstract; cannot be instantiated
Kotin nyt tällä koodilla:
http://www.java-tips.org/other-api-tips/javamail/how-to-send-an-email-with-a-file-attachment-4.html
Mutta tulee: IOException while sending message
Hjoo katoin unisilla silmillä, pitäs olla javax.activation.DataSource source = new javax.activation.FileDataSource(attachment);
kuten virhekin vähän viittaisi. IOException
taidettiin mainita myös oman linkkini kommenteissa, piti vissiin käyttää absoluuttista polkua.
Hei sain sen nyt toimimaan kun lisäsin tiedostot Tomcatin /bin kansioon.
Se vaan, että kun kirjoitan jotain tiedostoon niin se ylikirjoittaa koko tiedoston.
Siis pitää saada sellainen että xml-tiedosto on vain muistissa, koska siis xml-tiedosto lähetetään itselle web-lomakkeen avulla ja xml-tiedostoon pitää tulla web-lomakkeen textfieldit xml:nä.
Sain nyt toimimaan siten kun pitää!
Aihe on jo aika vanha, joten et voi enää vastata siihen.