PDA

View Full Version : socket java dialoga con smtp, uscire dal data


karplus
19-11-2005, 18:22
ciao, sto cercando di fare una classe java che tramite socket dialoga con un server smtp allo scopo di mandare una mail.

E' tutto ok, l'unico problema é uscire dal campo data dopo aver scritto il testo della mail; in una sessione telnet dopo aver scritto il testo della mail do invio, un punto e poi un altro invio ed esco dal campo del testo.

Qui ho cercato di far la stessa cosa con /n seguito da un punto e poi da /n ma non funge :muro:

Idee? :stordita:

riporto il sorgente qui sotto x completezza


import java.net.*;
import java.io.*;
import java.util.*;

public class SMTPTest {
private PrintWriter out;
private BufferedReader in;

public void send(String s) throws IOException {
if (s != null) {
out.println(s);
out.flush();
}

String line;
if ((line = in.readLine()) != null) //output the response
System.out.println(line);
}

public void sendMail() {
try {
String from = new String("prova@sdas.org");
String to = new String("miamail@tiscali.it");

Socket s = new Socket("smtp.virgilio.it", 25);
out = new PrintWriter(s.getOutputStream());
in = new BufferedReader(new InputStreamReader(s.getInputStream()));

send("HELO -");
send("MAIL FROM:<"+from+">");
send("RCPT TO:<"+to+">");
send("DATA");
send("Happy SMTP Programming!!");
send("Happy SMTP Programming!!");
send("\n");
send(".");
send("\n");
send("QUIT");
s.close();
out.close();
in.close();
}

catch(IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
SMTPTest smtp = new SMTPTest();
smtp.sendMail();
}
}

cionci
20-11-2005, 15:25
Prova con \r\n...

karplus
20-11-2005, 16:30
ho provato con una cosa del genere:

send("Happy SMTP Programming!!");
send("\r\n.");
send(".");
send("QUIT");

ma dà sempre lo stesso problema!
\r a cosa servirebbe?

cionci
20-11-2005, 16:35
Così:

send("\r\n.");
send(".");
send("\r\n.");

\r è il carriage return...

Il comando di chiusura è CR LF . CR LF (LF = Line Feed) e lo vedi anche dall'RFC: http://www.faqs.org/rfcs/rfc821.html

karplus
21-11-2005, 01:04
ok funge, thx :D