Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Problema Invio Mail

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    25

    Problema Invio Mail

    Ciao a tutti,

    ho un problema con l'invio di una mail con allegato. Il codice usato è quello presente nella pillola al seguente link

    http://forum.html.it/forum/showthread/t-1150691.html

    In realtà non riesco ad inviare nessuna mail, ma neanche a riscontrare nessuna eccezione: sembra che la mail cada nel vuoto.

    Qualcuno potrebbe aiutarmi? Please

  2. #2
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Bisognerebbe sapere se ti dà qualche eccezione e/o le risposte del server SMTP...

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    25
    Grazie per la risposta (l'unica)

    Nel momento in cui ho aperto la discussione non ricevevo alcun tipo di eccezione/errore, nessun segnale di vita.

    Dopo vari tentativi e smanettamenti ricevo un'eccezione socket:


    "java.net.SocketException: Malformed reply from SOCKS server"
    La riga di codice a cui fa riferimento è:


    codice:
        private int readSocksReply(InputStream in, byte[] data) throws IOException { 	int len = data.length; 	int received = 0; 	for (int attempts = 0; received < len && attempts < 3; attempts++) { 	    int count = in.read(data, received, len - received); 	    if (count < 0) 		throw new SocketException("Malformed reply from SOCKS server"); 	    received += count; 	} 	return received;     }
    Idee?

  4. #4
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Sì, quando il metodo read termina la lettura per EOF (cioè quando il server ha finito di inviare dati e non ha più niente da leggere), restituisce -1; nel codice da te presentato, quando il server ha finito di comunicare dati, genera un'eccezione (count<0). Elimina la riga dell'IF

    Ciao
    PS: Se può essere utile: http://docs.oracle.com/javase/6/docs...putStream.html

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    25
    progAnd ti ringrazio tantissimo per il supporto! sei l'unico a darmi soddisfazioni

    Ho seguito il tuo suggerimento ma non so come metterlo in pratica: quell'if è all'interno della classe "sockssocketimpl.java". C'è un modo per modificarla? come faccio?

  6. #6
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Non è una classe tua? Apri il file, modificalo, salva e ricompila
    In caso contrario, c'è qualcosa che mi sfugge...

    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    25
    No, non è mia, NOn è una classe pubblica.


  8. #8
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119

    Dove viene richiamato quel metodo?

    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    25
    Viene richiamato dal metodo "sendMail" al seguente passaggio:

    codice:
    public static void sendMail(String mailServer,                                String[] recipient,                                String[] cc,                                String subject,                                String[] messaggio,                                String fileName,                                String userName,                                String password,                                String nomeUtente,                                String from,                                String nomeFileVis,                                String confLettura,                                boolean requireLogin,                                boolean confReceipt) {       String linea = "";       boolean autenticated = false;       authMechanism = new boolean[3];       authMechanism[0] = false;   // CRAM-MD5       authMechanism[1] = false;   // LOGIN       authMechanism[2] = false;   // PLAIN        try {          Socket s = new Socket(mailServer, 25);           BufferedReader in = new BufferedReader( new InputStreamReader(s.getInputStream(), "8859_1") );          BufferedWriter out = new BufferedWriter( new OutputStreamWriter(s.getOutputStream(), "8859_1") );           linea = in.readLine();           String boundary = "Dat_Sep_Str_#COD#";   // -- Data Separator String --          sendln(in, out, "EHLO " + InetAddress.getLocalHost().getHostName());   // + userName           recuperaMechanism( in );           if ( requireLogin ) {             for(int i=0; i<authMechanism.length; i++) {                if ( authMechanism[i] && !autenticated ) {                   autenticated = true;                   sendLogin(0, in, out, userName, password, i);                }             }             if ( !autenticated ) {                System.out.println("Autenticazione non riuscita: nessun metodo di autenticazione rilevato o metodo non supportato!");             }          }           sendln(in, out, "MAIL FROM: <"+ InetAddress.getLocalHost().getHostName() + ">");          for (int i=0; i<recipient.length; i++)             sendln(in, out, "RCPT TO: <" + recipient[i] + ">" + (confReceipt ? " NOTIFY=SUCCESS" : "") );          for (int i=0; i<cc.length; i++)             sendln(in, out, "RCPT TO: <" + cc[i] + ">");          sendln(in, out, "DATA");          sendln(out, "MIME-Version: 1.0");          sendln(out, "Subject: " + subject);          sendln(out, "From: " + userName + " <" + from + ">");          for (int i=0; i<recipient.length; i++)             sendln(out, "To: <" + recipient[i] + ">");          for (int i=0; i<cc.length; i++)             sendln(out, "Cc: <" + cc[i] + ">");          sendln(out, "Disposition-Notification-To: "+confLettura);          sendln(out, "X-Confirm-Reading-To: "+confLettura);          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");          for (int i=0; i<messaggio.length; i++)             sendln(out, messaggio[i]);          sendln(out, "\r\n--" +  boundary );           // send the attachment          String nomeFile = (new File(nomeFileVis)).getName();          sendln(out, "Content-Type:Application/Octet-stream; name="+nomeFile);          sendln(out, "Content-Disposition: attachment;filename=\""+nomeFile+"\"");          sendln(out, "Content-transfer-encoding: base64\r\n");          //MIMEBase64.encode(fileName, out);           sendln(out, "\r\n\r\n--" + boundary + "--\r\n");          sendln(in, out,".");          sendln(in, out, "QUIT");          s.close();       } catch (Exception e) {          e.printStackTrace();       }    }
    In pratica, send mail instanzia Socket s = new Socket(mailServer, 25);
    a sua volta Socket richiama il metodo "Connect" della classe Socket che a sua volta richiama la classe "sockssocketimpl" che contiene l'if in questione

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Tenendo presente che quella mia vecchia classe è davvero vecchia... non guardare ai metodi delle classi del core (che funzionano per definizione), ma concentrati sulla prima riga dello StackTrace che parla di qualcosa che hai scritto tu... lì è il problema. In buona sostanza, posta tutto lo stackTrace dell'eccezione che ottieni.

    Posta esattamente la riga di codice in cui richiami il metodo "sendMail()", e anche tutte le dichiarazioni / istanziazioni delle variabili che eventualmente usi in quel metodo.

    Aggiungi anche altre informazioni, come ad esempio il server SMTP che stai cercando di contattare (se usi l'SMTP di GMail, ad esempio, fai una ricerca nel forum perchè quella classe non va bene e bisogna usare altri sistemi).


    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

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.