Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [JAVA] POP3 e SMTP

  1. #1
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225

    [JAVA] POP3 e SMTP

    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
    ...credi sia aria quella che stai respirando?

  2. #2
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

  3. #3
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225
    Originariamente inviato da pippo75
    prova a dare un'occhio qui:
    http://developer.java.sun.com/develo...ning/JavaMail/
    ma questo javaMail è già compreso nel pacchetto j2sdk1.4.1_01 o devo istallarlo come suggerisce il link che mi hai suggerito?
    ...credi sia aria quella che stai respirando?

  4. #4
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225
    nell'attesa della risposta di Pippo75 io ho iniziato a stendere una prima bozza di codice, riguardo il metodo RiceviMsg, fatemi sapere cosa ne pensate, grazie.


    codice:
    import java.io.*;
    import java.net.*;
    import java.util.StringTokenizer;
    
    public class Comunicazione
    {
        public static final String CRLF = "\r\n";
        
        public static void main(String[] args) throws Exception {
            Socket s = new Socket("nome_host", numero_porta);
    	OutputStreamWriter out = new OutputStreamWriter(s.getOutputStream(), "US-ASCII" );
    	BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream(), "US-ASCII"));
    	String line;
    }
    ...credi sia aria quella che stai respirando?

  5. #5
    vai, scarica e installa
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

  6. #6
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225
    Grazie Pippo, se puoi resta on-line dato che prevedo che avrò altre cose da chiederti!
    ...credi sia aria quella che stai respirando?

  7. #7
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225
    Pippo ho saputo che non posso usare classi extra al pacchetto J2SE, quindi niente javamail. Ora sto cercando di sviluppare il tutto facendo uso di java.net.* java.io.* e java.util.*

    Sono costretto a fre due classi distinte, una per pop3 ed una per smtp.

    Nel frattempo che lavoro, se tu hai qualche sugerimento fammelo sapere. Io sarò nuovamente on-line domani mattina.

    Grazie ancora per l'assistenza!
    ...credi sia aria quella che stai respirando?

  8. #8
    ma che cavolo sognifica che non si possono usare classe extra!!
    va contro i principi della programmazione ad oggetti
    inoltre è anche controproducente: perchè rifare cose che altri hanno già fatto e sono testate e funzionanti?
    mah


    la classe per l'invio dei messaggi è un po' sempliciotta, ma dovrebbe andare bene
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

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.