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.