Ciao a tutti. Sto costruendo una Web Application con Struts in cui ho una pagina jsp contenente un form con vari campi, tra i quali uno che seleziona un file dal File System. Io passo tutti questi oggetti alla classe Action che a sua volta richiama un metodo sendMail di una classe Mail Utility che invia delle email con allegato. Però riesco ad inviare solamente allegati di tipo txt..per gli altri allegati mi da un errore. Il codice della classe MailUtility è:
package com.mypackage;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.util.ByteArrayDataSource;
import javax.xml.transform.Transformer;
import javax.xml.transform.stream.StreamSource;
import org.apache.struts.upload.FormFile;
import java.util.*;
import java.io.*;
public class MailUtility
{
public MailUtility (String dest, String mitt, String oggetto, String testoEmail, String URL, FormFile allegato){
}
public static void sendMail (String dest, String mitt, String oggetto, String testoEmail, String URL, FormFile allegato)
throws MessagingException, IOException
{
// Creazione di una sessione email
Properties props = new Properties();
props.put("mail.smtp.host", "mail.libero.it");
Session session = Session.getDefaultInstance(props);
// Creazione del messaggio da inviare
MimeMessage message = new MimeMessage(session);
//message.setText(testoEmail);
message.setSubject(oggetto);
Multipart multipart = new MimeMultipart();
BodyPart messageBP1 = new MimeBodyPart();
messageBP1.setText(testoEmail);
multipart.addBodyPart(messageBP1);
//allegato
if(allegato != null)
{
try
{
InputStream in = new ByteArrayInputStream(allegato.getFileData(),0,alle gato.getFileSize());
MimeBodyPart mimein = new MimeBodyPart(in);
mimein.setFileName(allegato.getFileName());
DataSource source = new MimePartDataSource(mimein);
MimeBodyPart attachBP = new MimeBodyPart();
attachBP.setDataHandler(new DataHandler(source));
attachBP.setFileName(allegato.getFileName());
multipart.addBodyPart(mimein);
}
catch(MessagingException ex1)
{
}
catch(FileNotFoundException ex1)
{
}
catch(IOException ex1)
{
}
}
//imposta come contenuto del messaggio l'oggetto multipart
message.setContent(multipart);
// Aggiunta degli indirizzi del mittente e del destinatario
InternetAddress fromAddress = new InternetAddress(mitt);
InternetAddress toAddress = new InternetAddress(dest);
//InternetAddress ccAddress = new InternetAddress(destcc);
message.setFrom(fromAddress);
message.setRecipient(Message.RecipientType.TO, toAddress);
Transport.send(message);
}
}
La classe Action è:
package com.orangee;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.upload.FormFile;
public class SegnalazioneAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
{
SegnalazioneActionForm saf = (SegnalazioneActionForm) form;
FormFile allegato = saf.getAllegato();
String mitt = saf.getUtente();
String URL = saf.getURL();
String oggetto = saf.getPriorita();
String dest = saf.getTipologiaProblema();
String testoEmail = saf.getNotifica();
if (mitt.equals("mittentevalido@libero.it"))
{
try {
MailUtility.sendMail(dest, mitt, oggetto, testoEmail, URL, allegato);
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (mapping.findForward("success"));
}
else // username non valido
{
ActionErrors errors = new ActionErrors();
errors.add("Utente", new ActionMessage("error.utente.invalid"));
saveErrors(request,errors);
return (mapping.findForward("failure"));
}
}
}
Mi sapete dire come posso gestire gli allegati di altro tipo (per esempio pdf, doc, immagini)..credo sia un problema di codifica del file che prelevo come oggetto FormFile...ma non so come risolvere

Rispondi quotando