Leggere la posta su POP3 con ASP.NET

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Se non avete ancora chiaro come funziona il collegamento potete provare a farlo "a mano" tramite un qualunque programma di telnet (va benissimo anche quello fornito con Windows e accessibile da riga di comando): aprite una shell MSDOS (esiste anche su XP, nessuna paura basta fare Start->Esegui e scrivere "cmd") e lanciate "telnet" (per avere un elenco dei comandi del telnet basta usare "?"), prima di tutto collegatevi al server di posta scrivendo:

o popmail.libero.it 110

Se tutto funziona il server vi risponderà qualcosa del genere:

+OK POP3 PROXY Server Ready [?]

Vuol dire che il collegamento è riuscito, così nella nella nostra pagina si recupera la risposta del server gestendo gli eventuali errori.

try
  NetStream = tcpC.GetStream()
  MyResponse = GetResponse(NetStream)
catch MyEx as Exception
  lblMessaggi.Text += "Si è verificato un errore!"
end try

Iniziamo quindi il collegamento come indicato nell'RFC 1939, cioè inserendo prima l'utente (preceduto dal comando "user") e subito dopo la password, preceduta dal comando "pass".

  MyResponse = SendCommand(netstream,"user " & user & vbCrLF)
  MyResponse = SendCommand(netstream,"pass " & pass & vbCrLf)

Fate attenzione al fatto che alla fine di ogni comando viene aggiunto un ritorno a capo, questo per indicare al server che il comando è terminato e che può elaborarlo.

Se l'utente o la password non sono stati accettati e quindi non si è riusciti ad accedere alla casella di posta, (cioè se riceviamo una risposta "-ERR") restituiamo un messaggio di errore e interrompiamo il collegamento

if left(MyResponse,4)="-ERR" then
  lblMessaggi.Text += "Errore  nel collegamento dell'utente; controlla i dati e riprova<BR>"
  lblMessaggi.Text += MyResponse & "<br>"
  MyResponse=SendCommand(netstream,"QUIT" & vbCrLF)
  tcpC.close

altrimenti indichiamo che l'utente è correttamente collegato

else
  lblMessaggi.Text += "Utente correttamente collegato<BR><BR>"

Da questo momento possiamo nviare i comandi al server che li processerà e ci restituirà di volta in volta una risposta preceduta da "+OK" se il comando ha avuto successo, oppure da "-ERR" se si verifica un errore.

I comandi che si possono inviare sono riportati in questa tabella:

STAT restituisce le statistiche della casella, cioè numero messaggi e spazio occupato

LIST [nmess] accetta come argomento un numero di messaggio e restituisce lo spazio occupato

RETR nmess recupera l'intero messaggio
DELE nmess marca un messaggio per la cancellazione (che viene effettuata alla chiusura della connessione)
NOOP non fa nulla, restituisce +OK (viene usato per evitare il timeout)
RSET annulla la cancellazione dei messaggi fatta con DELE
QUIT chiude la connessione con la casella ed elimina gli eventuali messaggi marcati per la cancellazione

In questo esempio richiediamo solo le statistiche dell'intera casella di posta:

MyResponse=SendCommand(netstream,"stat" & vbCrLf)

Riceveremo una risposta del tipo "+OK 3 54789". Facendo uno split avremo nel primo elemento (indice 0) "+O"' nel secondo il numero dei messaggi, nel terzo la dimensione totale dei messaggi in bytes:

dim tmpArray() as string
tmpArray = split(MyResponse," ")

dim thisMess as integer
dim NumMess as string = tmpArray(1)

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC