sto realizzando una classe che si compone di 2 metodi (tale classe sarà poi usata per il funzionamento di un client e-mail):
Primo metodo:
RiceviMsg: restituisce un intero come codice di controllo, prende il parametro Messaggio. Il metodo dichiara un nuovo di tipo Socket dando in ingresso l’indirizzo dell’host cui ci si vuole connettere, e la porta. Poi crea un nuovo oggetto OutputStreamWrtiter dandogli come parametro in ingresso l’oggetto Socket.getOutputStream. Poi crea un ogetto BufferedReader dandogli come parametro in ingresso un oggetto InputStreamReader creato al momento passando come parametro l’oggetto Socket.getInputStreamReader. Il metodo invia dati contenuti in stringhe prefissati che sono i comandi POP3. Restituisce un Int come codice di controllo. Il metodo mediante la classe StringTokenizer, suddivide il messaggio nelle parti corrispondenti ai campi indicati nell’oggetto della classe Messaggio, quindi invoca il metodo adNewMsg della classe Msg passandogli come parametri le variabili dei vari campi.
Secondo metodo:
Invia Msg : restituisce un intero come codice di controllo, prende il parametro Messaggio. Il metodo dichiara un nuovo di tipo Socket dando in ingresso il l’indirizzo dell’host cui ci si vuole connettere, e lo porta. Poi crea un nuovo oggetto OutputStreamWrtiter dandogli come parametro in ingresso l’oggetto Socket.getOutputStream. Poi crea un ogetto BufferedReader dandogli come parametro in ingresso un oggetto InputStreamReader creato al momento passando come parametro l’oggetto Socket.getInputStreamReader.
Il metodo invia quindi dati contenuti in stringhe prefissate che sono i comandi SMTP e dati presi dalle variaili dell’oggetto Messaggio passato in ingresso.
Per la ricezione di messaggi ho un esempio sottomano del quale vi mostro il codice:
codice:
import java.io.*;
import java.net.*;
public class ClientSocket {
public static void main (String[] args) {
try {
System.out.println("Mi sto connettendo");
Socket mysocket;
PrintWriter pw;
mysocket = new Socket("127.0.0.1", 1234);
pw = new PrintWriter(mysocket.getOutputStream());
System.out.println("Connessione effettuata");
System.out.println("Invio dati");
pw.println("ciao");
pw.flush();
pw.close();
mysocket.close();
}
catch (UnknownHostException e) {
System.err.println("Non trovo l'host");
System.exit(1);
}
catch (IOException ioe) {
System.out.println ("Errore connessione: "+ioe);
System.exit(1);
}
}
}
Per l'invio dei messaggi invece:
codice:
import java.io.*;
import java.nio.*;
import java.net.*;
public class SendMail {
public static final String CRLF = "\r\n";
public static void main(String[] args) throws Exception {
Socket s = new Socket("localhost", 25);
OutputStreamWriter out = new OutputStreamWriter(s.getOutputStream(), "US-ASCII");
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream(), "US-ASCII"));
String line;
line = in.readLine();
System.out.println(line);
if(!line.startsWith("220")) {
throw new Exception(line);
}
line = "HELO localhost.localdomain";
out.write(line+CRLF); out.flush();
System.out.println(line);
line = in.readLine();
System.out.println(line);
if(!line.startsWith("250")) {
throw new Exception(line);
}
line = "MAIL FROM: <nome_utente@host>";
out.write(line+CRLF); out.flush();
System.out.println(line);
line = in.readLine();
System.out.println(line);
if(!line.startsWith("250")) {
throw new Exception(line);
}
line = "RCPT TO: <nome_utente@host>";
out.write(line+CRLF); out.flush();
System.out.println(line);
line = in.readLine();
System.out.println(line);
if(!line.startsWith("250")) {
throw new Exception(line);
}
line = "DATA";
out.write(line+CRLF); out.flush();
System.out.println(line);
line = in.readLine();
System.out.println(line);
if(!line.startsWith("354")) {
throw new Exception(line);
}
line =
"Subject: test"+CRLF+
""+CRLF+
"questa e' una prova"+CRLF+
"."+CRLF;
out.write(line); out.flush();
System.out.println(line);
line = in.readLine();
System.out.println(line);
if(!line.startsWith("250")) {
throw new Exception(line);
}
line = "QUIT";
out.write(line+CRLF); out.flush();
System.out.println(line);
line = in.readLine();
System.out.println(line);
if(!line.startsWith("221")) {
throw new Exception(line);
}
s.close();
}
}
qualcuno sa dirmi come mettere insieme il tutto per creare correttamente questa classe che poi verrà sfruttata dalla classe principale del client?
Grazie