Newsgroup: it.comp.java
Titolo: smtp client: perche' non mi funziona?

\n");
                os.writeBytes("Subject: testing\n");
                os.writeBytes("Hi there, eccomi qui\n");
                os.writeBytes(".\n");
      os.writeBytes("QUIT\n");
// keep on reading from/to the socket till we receive
// the "Ok" from SMTP,
// once we received that then we want to break.
                String responseLine;
                while ((responseLine = is.readLine()) != null) {
                    System.out.println("Server: " + responseLine);
                    if (responseLine.indexOf("Ok") != -1) {
                      break;
                    }
                }
      os.close();
                is.close();
                smtpSocket.close();
            } catch (UnknownHostException e) {
                System.err.println("Trying to connect to unknown host: " +
e);
            } catch (IOException e) {
                System.err.println("IOException:  " + e);
            }
        }
    }
}

\n");
Delay();
os.writeBytes("Subject: testing\n");
Delay();
os.writeBytes("Hi there, eccomi qui");
Delay();
os.writeBytes("\n");
Delay();
os.writeBytes("\n");
Delay();
os.writeBytes(".\n");
Delay();
os.writeBytes("QUIT\n");
Per una lista dei comando supportati dal mail-server puoi loggare con una
sessione telnet
e scrivere -help, in ogni caso dal documento RFC821:
[.....]
3.5. OPENING AND CLOSING
At the time the transmission channel is opened there is an exchange to
ensure that the hosts are communicating with the hosts they think they are.
The following two commands are used in transmission channel opening and
closing:
HELO <SP> <domain> <CRLF>
QUIT <CRLF>
In the HELO command the host sending the command identifies itself; the
command may be interpreted as saying "Hello, I am <domain>".
[.....]
Se riesco a provare il tutto ti faccio sapere, se ti serve altro fai un
fischio, spero di esserti stato di
aiuto.
Ciao
Pow
--
----------------------------------------------------
Ama il tuo mestiere con passione
E' il significato della tua vita
Auguste Rodin (1840-1917)
 "Not everything that  counts can be
 counted, and not everything that can
be counted counts".
Albert Einstein
"Hunt for the Engineer and the Engineer will hunt you."
Hellraiser5 Pinhead

Ho scoperto l'inghippo, per lo meno...
Ho provato a cambiare provider, utilizzando il mio account su 
tin.it
Qui non mi dava messaggio di action failed, e infatti la mail mi
veniva regolarmente consegnata, solo che mancava il nome
del destinatario e il testo del messaggio.
Soluzione: per il destinatario occorre inserire
 os.writeBytes("To: destinatario\n");
e il messaggio deve cominciare con un CRLF, cioe':
 os.writeBytes("\nCiao there, eccomi qui!\n");
Per quanto riguarda i tempi di risposta sono
considerati dal seguente codice
String responseLine;
                while ((responseLine = is.readLine()) != null) {
                    System.out.println("Server: " + responseLine);
                    if (responseLine.indexOf("Ok") != -1) {
                      break;
                    }
                }
quindi non occorre inserire ritardi.
Su 
libero.it
  invece continua l'errore. Evidentemente c'e' qualche
meccanismo di sicurezza. Cerchero' di informarmi meglio.
Comunque grazie della risposta e ciao :)
    Orlando

 e il messaggio deve cominciare con un CRLF, cioe':
Si', se non ricordo male c'e' scritto nella RFC - una linea vuota separa 
headers da body.
-- 
Fighting for peace is like fucking for virginity
ObjectZone - 
http://space.tin.it/computer/csadun

 Qui non mi dava messaggio di action failed, e infatti la mail mi
[CUT]
Per libero si ottiene un errore anche inviando la mail manualmente tramite
TELNET.
Forse hanno modificato qualcosa per aumentare la sicurezza oppure per
impedire l'invio
di fake-mail (giustamente!).


quindi non occorre inserire ritardi.
Forse mi sfugge qcsa, ma il pezzo di codice non è alla fine della
trasmissione della e-mail?
Tra i vari comandi non esiste nessun tempo di attesa per la risposta da
parte del server.
Mi sbaglio?


A dire la verita' mi ero posto anch'io la questione, ma credo
che i comandi vengano bufferizzati e poi eseguiti uno alla
volta, aspettando quindi la risposta.
Infatti, se provi ad eseguire l'applicazione vedrai che
sulla console appaiono i comandi con i relativi
esiti.
Per lanciare il client usa: java smtpClient tuomailsmtp
Ciao
    Orlando


 destination mailbox. The first host in the <forward-path>
In effetti pensavo a RFC822, che specifica il formato degli header
in generale, dove dice
          A message consists of header fields and, optionally, a body.
     The  body  is simply a sequence of lines containing ASCII charac-
     ters.  It is separated from the headers by a null line  (i.e.,  a
     line with nothing preceding the CRLF).
