Oppure

Loading
29/04/10 9:08
Alessandro Rimoldi
Buongiorno a tutti!

Devo realizzare un semplice Client POP che gestisca lo scario delle e-mail tramite SSL.

Ho guardato un pò on-line ma non ho trovato niente di interessante.

Avete qualche buon consiglio? :)

Grazie e buon lavoro!

Alessandro
aaa
29/04/10 9:24
HeDo

si, inizia a studiarti il protocollo pop3 en.wikipedia.org/wiki/…
e da li studia l'estensione con SSL

quanto tutto ciò ti è ben chiaro, guarda cosa offre il framework in proposito e scrivi il programma :)
aaa
29/04/10 9:48
Alessandro Rimoldi
Perchè dai per scontato che non sappia come funziona il POP? :)

Comunque, la connessione via SSL sono riuscito ad implementarla; mi rimane solo da scaricare le e-mail.

Se hai qualche dritta... :asd:
aaa
29/04/10 10:14
HeDo
aaa
29/04/10 10:24
Alessandro Rimoldi
Forse sono pretenzioso; c'è qualcosa di "free"? E' possibile gestire il POP utilizzando solo le classi di .NET?

(Ri)Grazie! :)
aaa
29/04/10 11:27
HeDo
aaa
29/04/10 12:51
Alessandro Rimoldi
Rieccomi qui... :asd:

Sono riuscito ad aprire la connessione e a ottenere l'elenco di tutte le e-mail nel casella di posta (PEC).

Nel momento in cui ho l'ID dell'e-mail richiedo solo quell'e-mail al fine di memorizzarne il corpo in un file di testo da poter leggere successivamente.

Il codice che utilizzo è:


        public Pop3Message Retrieve(int ID)
        {
            message = "RETR " + ID + "\r\n";
            Write(message);
            response = Response();
        }

        private void Write(string message)
        {
            System.Text.ASCIIEncoding en = new System.Text.ASCIIEncoding();

            byte[] WriteBuffer = new byte[1024];
            WriteBuffer = en.GetBytes(message);

            NetworkStream stream =  client.GetStream();
            stream.Write(WriteBuffer, 0, WriteBuffer.Length);
        }

        private string Response()
        {
            System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
            byte[] serverbuff = new Byte[1024];
            NetworkStream stream = client.GetStream();
            int count = 0;

            while (true)
            {
                byte[] buff = new Byte[2];
                [b]int bytes = stream.Read(buff, 0, 1);[/b]
                if (bytes == 1)
                {
                    serverbuff[count] = buff[0];
                    count++;

                    if (buff[0] == '\n')
                    {
                        break;
                    }
                }
                else
                {
                    break;
                };
            };

            string retval = enc.GetString(serverbuff, 0, count);
            return retval;
        }



L'esecuzione del comando che ho indicato in grassetto mi dà il seguente errore:

Impossibile leggere dati dalla connessione del trasporto: Connessione in corso interrotta forzatamente dall'host remoto.

Sapete dirmi come mai?

Grazie!
aaa