Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33
  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    [Java] Invio mail con allegato

    Ciao a tutti.

    La domanda è semplice: è possibile tramite Java inviare una mail con allegato un file?
    Ho dato un'occhiata ai post precedenti su questo argomento, ma non ho trovato nulla che faccia al caso mio: mi servirebbe del codice che permetta di allegare un file, inviare la mail tramite SMTP autenticato (nome utente e password) e non richieda J2EE, ma semplicemente J2SE (in pratica, non dispongo del package javax.mail).

    Se qualcuno ha qualche suggerimento, è sempre ben accetto.

    Grazie a tutti.


    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    All'inizio stavo cercando via google un modo per mandare email con allegato via telnet, e smanettando sono giunto a questo link

    http://www.rgagnon.com/javadetails/java-0083.html

    figlio di:

    http://www.rgagnon.com/masters/java-net.html

    Non ho provato il codice, per cui non ti so dire se funzioni o sia spazzatura.
    Ciao
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ti ringrazio per l'aiuto.
    Ho dato uno sguardo al codice e mi sembra che possa essere utile, solo che testandolo ottengo una caterba di errori:
    codice:
    java.net.SocketException: Software caused connection abort: socket write error
            at java.net.SocketOutputStream.socketWrite0(Native Method)
            at java.net.SocketOutputStream.socketWrite(Unknown Source)
            at java.net.SocketOutputStream.write(Unknown Source)
            at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(Unknown Source)
            at sun.nio.cs.StreamEncoder$CharsetSE.implWrite(Unknown Source)
            at sun.nio.cs.StreamEncoder.write(Unknown Source)
            at java.io.OutputStreamWriter.write(Unknown Source)
            at java.io.BufferedWriter.flushBuffer(Unknown Source)
            at java.io.BufferedWriter.flush(Unknown Source)
            at MIMEBase64.send(MIMEBase64.java:88)
            at MIMEBase64.encode(MIMEBase64.java:39)
            ...
    Da quello che ho potuto constatare è la classe MIMEBase64 che genera l'errore appena tenta di scrivere sulla Socket...

    Sono 2 giorni che tento di inviare una mail con allegato in tutti i modi possibili ed immaginabili, ma il risultato per ora è pari ad un pugno di mosche senza mosche...


    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

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ho trovato l'errore: manca il comando EHLO!!!

    Rimane il fatto che non mi ha inviato la mail: ha elaborato, non ha dato alcun tipo di errore, ma la mail non c'è...


    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Non importa: ho risolto.
    Tutti i problemi risiedono sull'autenticazione, ma il server che utilizzo non necessita di autenticazione.


    Grazie mille per il preziosissimo aiuto!


    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    bhè, allora posta per i posteri
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    E adesso ho appena scoperto un'altra cosa interessante: il server SMTP che utilizzavo prima (quello che richiede autenticazione) tentava di inviare la mail, ma falliva perchè l'autenticazione non veniva verificata... chissà come si effettua l'autenticazione su Libero...


    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

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Posto il codice: sostanzialmente è quello indicato nel primo link di Andrea1979, ma l'ho leggermente modificato in modo che sia possibile inviare un file qualsiasi, tramite una sola chiamata:
    codice:
    import java.io.*;
    import java.net.*;
    
    public class SendMail {
      static  int SMTPport =  25;
      static  Socket  socket;
      static  DataInputStream in;
      static  DataOutputStream out;
      static  PrintStream prout;
    
     public static void sendMail(String mailServer,
                                 String recipient,
                                 String subject,
                                 String messaggio,
                                 String fileName,
                                 String userName,
                                 String from) {
      try {
        Socket s = new Socket(mailServer, SMTPport);
        BufferedReader in = new BufferedReader( new InputStreamReader(s.getInputStream(), "8859_1") );
        BufferedWriter out = new BufferedWriter( new OutputStreamWriter(s.getOutputStream(), "8859_1") );
    
        String boundary = "Dat_Sep_Str_#COD#";   // Servirà??  -- Data Separator String --
    
        sendln(in, out, "EHLO " + userName);
        sendln(in, out, "MAIL FROM: <"+ from + ">");
        sendln(in, out, "RCPT TO: <" + recipient + ">" );
        sendln(in, out, "DATA");
        sendln(out, "MIME-Version: 1.0");
        sendln(out, "Subject: " + subject);
        sendln(out, "From: " + userName + " <" + from + ">");
        sendln(out, "Content-Type: multipart/mixed; boundary=\"" + boundary +"\"");
        sendln(out, "\r\n--" + boundary);
    
        // Send the body
        sendln(out, "Content-Type: text/plain; charset=\"us-ascii\"\r\n");
        sendln(out, messaggio);
        sendln(out, "\r\n--" +  boundary );
    
        // send the attachment
        String nomeFile = (new File(fileName)).getName();
        sendln(out, "Content-Type:image/gif; name="+nomeFile);
        sendln(out, "Content-Disposition: attachment;filename=\""+fileName+"\"");
        sendln(out, "Content-transfer-encoding: base64\r\n");
        MIMEBase64.encode(fileName, out);
        sendln(out, "\r\n--" + boundary);
    
        sendln(out, "\r\n\r\n--" + boundary + "--\r\n");
        sendln(in, out,".");
        sendln(in, out, "QUIT");
        s.close();
        }
      catch (Exception e) {
        e.printStackTrace();
        }
      }
    
     public static void sendln(BufferedReader in, BufferedWriter out, String s) {
      try {
        out.write(s + "\r\n");
        out.flush();
        Thread.sleep(1000);
        s = in.readLine();
        }
      catch (Exception e) {
        e.printStackTrace();
        }
       }
    
     public static void sendln(BufferedWriter out, String s) {
       try {
        out.write(s + "\r\n");
        out.flush();
        }
       catch (Exception e) {
        e.printStackTrace();
        }
       }
     }
    La classe richiede l'utilizzo anche della classe di corredo MIMEBase64.java che si trova sempre nel primo link.

    Esempio di utilizzo:
    codice:
    SendMail.sendMail(hostName,                // Indirizzo del server SMTP
                      indirizzoDestinatario,   // Indirizzo del destinatario
                      oggetto,                 // campo Oggetto della mail
                      messaggio,               // Messaggio testuale della mail
                      nomeFile,                // Nome del file da allegare
                      nomeUtente,              // Nome che verrà visualizzato dal destinatario
                      indirizzoMittente        // Indirizzo del mittente
                      );
    Tutti i parametri del metodo sendMail sono delle stringhe.


    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

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ho provato a telnettare la posta di libero e... il risultato:

    codice:
    telnet popmail.libero.it 110
    
    +OK POP3 PROXY server ready (7.0.027) <EA478CF6A8B36A636C09EC49C116E12DC701DDB1@pop2.libero.it>
    user xxxxxxx
    +OK Password required
    pass xxxxxxx
    -ERR [AUTH] POP3 access not allowed
    
    
    Connessione all'host perduta.
    Ergo, suppongo che non si possa fare, salvo forse via connessione di mamma libero.

    Facendo la stessa cosa con la casella di tin.it invece tutto ok.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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 © 2024 vBulletin Solutions, Inc. All rights reserved.