Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Lucadal
    Registrato dal
    Apr 2004
    Messaggi
    161

    JAVA: problema invio email con allegato

    Ciao ragazzi,
    ho fatto la seguente classe per l'invio di un'email con allegato un documento di tipo pdf:

    codice:
    package beans;
    
    import com.lowagie.text.Document;
    import java.util.Properties;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;
    
    public class EmailBean  {
            
            private static final String sender = "indirizzo email mittente";
            private static final String host = "host";
            private static final String subject = "Scadenza periodo di prestito";
            public String recipient = null;     
            
            public void send(String recipient, Document doc) throws AddressException,  MessagingException{
                
                Properties props = System.getProperties();            
                props.put("mail.smtp.host",host);
                
                Session session = Session.getInstance(props,null);
                
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(sender));
                message.setSubject(subject);
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
                
                BodyPart messageBodyPart = new MimeBodyPart();
                messageBodyPart.setText("Università degli studi di Cassino\nFacoltà di ingegnria\nAmministrazione oggetti prestati\n\nIn allegato un avviso di scadenza!!");
                
                messageBodyPart.setDataHandler(new DataHandler(doc,"application/pdf"));
                messageBodyPart.setFileName("Avviso.pdf");
                
                MimeMultipart multipart = new MimeMultipart();
                multipart.addBodyPart(messageBodyPart);
                message.setContent(multipart);
                Transport.send(message);
             }
       }
    Tale classe viene richiamata da una pagina jsp.
    Mi da però l'eccezione MessagingException dicendomi:

    codice:
    exception: 
    
        javax.servlet.ServletException: javax.mail.MessagingException: IOException while              sending message;
        nested exception is:
    	javax.activation.UnsupportedDataTypeException: no object DCH for MIME type application/pdf
    
    root cause: 
    
    javax.mail.MessagingException: IOException while sending message;
      nested exception is:
    	javax.activation.UnsupportedDataTypeException: no object DCH for MIME type application/pdf
    Sapreste aiutarmi a risolvere?

    Vi ringrazio.
    Impaziente di leggervi.
    "Liberty once again must become more important to us than the desire to security and material comfort." Ron Paul

    LUCA

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Alcune indicazioni:

    1) Java ha un forum dedicato dove postare
    2) Il codice va postato come da Regolamento, utilizzando gli appositi tag CODE
    3) Nel caso non l'avessi fatto, c'è la ricerca del forum da utilizzare per cercare eventuali risposte in altre discussioni.


    Sposto al discussione nel forum Java.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Lucadal
    Registrato dal
    Apr 2004
    Messaggi
    161

    Ops...

    Chiedo scusa. Non avevo notato i link li sotto!!
    "Liberty once again must become more important to us than the desire to security and material comfort." Ron Paul

    LUCA

  4. #4
    Prova a sostituire con questa porzione di codice:


    Codice PHP:

    String filename 
    = ...

    messageBodyPart = new MimeBodyPart();
    DataSource source = new FileDataSource(filename);
    messageBodyPart.setDataHandler(new DataHandler(source));
    messageBodyPart.setFileName(filename);
    multipart.addBodyPart(messageBodyPart);

    message.setContent(multipart);

    Transport.send(message); 
    Al mio segnale... scatenate l'inferno!

  5. #5
    Utente di HTML.it L'avatar di Lucadal
    Registrato dal
    Apr 2004
    Messaggi
    161

    mi spiego meglio

    Mi spiego meglio: io ho un database, su cui ci sono i campi che devo usare per la generazione di un file pdf che deve essere mandato come allegato tramite email all'indirizzo che si trova sempre sul database, senza però memorizzare il file su disco e poi allegandolo all'email, ma facendo fluire direttamente il flusso di byte nell'allegato dell'email.

    Quindi quello che mi dici non fa al mio caso.
    Comunque ho provato ad usare il tuo codice per vedere se almeno in quelle condizioni l'email arrivava. Purtroppo però neanche così funziona. Di seguito il codice e l'errore:

    codice:
    package beans;
    
    import com.lowagie.text.Document;
    import java.util.Properties;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;
    
    public class EmailBean  {
            
            private static final String sender = "prova@alice.it";
            private static final String host = "out.alice.it";
            private static final String subject = "Scadenza periodo di prestito";
            public String recipient = null;     // da settare alla chiamata del bean da jsp
            
            public void send(String recipient, Document doc) throws AddressException, MessagingException{
                //String textmess = null;
                
                Properties props = System.getProperties();            
                props.put("mail.smtp.host",host);
                props.put("mail.smtp.auth","true");
                props.put("mail.smtp.port","30");
                props.put("mail.smtp.host","out.alice.it");
                
                Session session = Session.getInstance(props,null);
                
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(sender));
                message.setSubject(subject);
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
                
                BodyPart messageBodyPart = new MimeBodyPart();
                messageBodyPart.setText("Università degli studi di Cassino\nFacoltà di ingegnria\nAmministrazione oggetti prestati\n\nIn allegato un avviso di scadenza!!");
    MimeMultipart multipart = new MimeMultipart();
    FileDataSource source = new FileDataSource("C:/Users/Luca/.personalDomain/personalDomain/config/Avviso.pdf");
                messageBodyPart.setDataHandler(new DataHandler(source));
                messageBodyPart.setFileName("Avviso");
                multipart.addBodyPart(messageBodyPart);
                
                message.setContent(multipart);
                Transport t = session.getTransport("smtp");
                try{
                    t.connect(host,"prova","password");
                    message.saveChanges();
                    t.send(message);
                } finally { t.close();}
                        
            }
             
    }
    codice:
    type Exception report
    
    message
    
    descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
    
    exception 
    
    javax.servlet.ServletException: javax.mail.MessagingException: Could not connect to SMTP host: out.alice.it, port: 30;
      nested exception is:
    	java.net.ConnectException: Connection timed out: connect
    root cause 
    
    javax.mail.MessagingException: Could not connect to SMTP host: out.alice.it, port: 30;
      nested exception is:
    	java.net.ConnectException: Connection timed out: connect
    root cause 
    
    java.net.ConnectException: Connection timed out: connect
    Comunque rimane anche il problema iniziale.


    "Liberty once again must become more important to us than the desire to security and material comfort." Ron Paul

    LUCA

  6. #6
    Puoi cmq crearti un file temporaneo che poi cancelli dopo l'invio.

    Per il secondo problema che si è presentato ho il dubbio che la porta sia errata infatti va in timeout (inoltre hai bisogno dell'autenticazione che hai specificato a true ma non hai implementato)
    Al mio segnale... scatenate l'inferno!

  7. #7
    Utente di HTML.it L'avatar di Lucadal
    Registrato dal
    Apr 2004
    Messaggi
    161

    non posso creare un file

    Se creo un file, per quanto temporaneo questo possa essere, se due utenti cercano di usare il servizio contemporaneamente si potrebbero avere problemi sull'esattezza del file che uno dei due invia, in quanto le due applicazioni saranno di natura concorrenti nell'uso del processore. Comunque sia, questo è un programma per un esame, per il quale il prof. mi ha fatto questa richiesta.

    Per quanto riguarda il secondo problema:

    1) ho fatto poi anche l'autenticazione, ma mi da lo stesso problema.
    2) inizialmente avevo lasciato la porta 25 come da standard; ho settato la porta 30 (numero a caso) per vedere se il problema continuava ad esistere. Come si fa a scegliere il numero della porta?

    Saluti.
    "Liberty once again must become more important to us than the desire to security and material comfort." Ron Paul

    LUCA

  8. #8
    La porta non la scegli tu. La porta la stabilisce il gestore del server mail (in questo caso alice). Basta impostare le stesse impostazioni che utilizzeresti per configurare outlook... cioè 25. Sicuro che l'errore con la 25 era lo stesso?
    Al mio segnale... scatenate l'inferno!

  9. #9
    Utente di HTML.it L'avatar di Lucadal
    Registrato dal
    Apr 2004
    Messaggi
    161

    Olèè... :)

    Allora... avevi ragione per la porta!! La 25 l'avevo provata quando non avevo ancora fatto l'autenticazione. Adesso funziona. Funziona però memorizzando il file su disco e poi allegandolo. Rimane da vedere solo il problema del primo post, ovvero quello del trasporto diretto del file all'allegato dell'email senza memorizzarlo su disco.

    Vado a cercare di risolvere.
    Se ne avete datemi indicazioni, perchè la vedo dura la cosa.

    Grazie
    "Liberty once again must become more important to us than the desire to security and material comfort." Ron Paul

    LUCA

  10. #10
    Utente di HTML.it L'avatar di Lucadal
    Registrato dal
    Apr 2004
    Messaggi
    161

    dall'università non funziona

    Ragazzi... quale può essere la causa del fatto che lo steso codice che stamattina da casa mia funzionava, con la connessione dell'università mi da l'eccezione "timed out connection"??
    "Liberty once again must become more important to us than the desire to security and material comfort." Ron Paul

    LUCA

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.