Leggere la posta su POP3 con ASP.NET

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

Per evitare problemi nel caso la casella fosse vuota controlliamo se ci sono messaggi e scriviamo il numero degli stessi e il totale dello spazio occupato, recuperati con il comand STAT:

if cint(NumMess) > 0 then
  lblMessaggi.Text += "Ci sono " & NumMess & " messaggi per un totale di " & tmpArray(2) & "bytes<br>"

Poi per ogni messaggio della casella recuperiamo la dimensione tramite il comando "LIST". Questa operazione poteva essere anche eseguita inviando un comando List senza parametri, e leggendo una alla volta le varie linee di risposta relativa ad ogni messaggio presente sulla casella, per semplicità si è scelto questo approccio:

for thisMess = 1 to cint(numMess)
  MyResponse = SendCommand(netstream,"list " & thisMess & vbCrLf)
  tmpArray = split(MyResponse," ")
  MyResponse = "Il messaggio Numero: " & thisMess & " occupa " & tmpArray(2)  & " bytes"
  lblMessaggi.Text += MyResponse & "<br>"
next

Se non ci sono messaggi scriviamo solo un avvertimento, indicando che la casella è vuota.

Avendo concluso le operazioni sulla casella devo provvedere a chiudere prima il collegamento con il server di posta inviando il comando QUIT e chiudendo lo stream e quindi la connessione vera e propria:

MyResponse=SendCommand(netstream,"QUIT" & vbCrLF)
tcpC.close

Come inviare le richieste (e ricevere le risposte)

Per finire abbiamo bisogno di altre due funzioni, che ci semplifichino un po' la mole di lavoro.

La prima invia il comando sulla connessione TCP creata in precedenza e restituisce la risposta; tale comando, che noi scriviamo come stringa, deve essere inviato sotto forma di Array di Bytes, ovviamente con codifica ASCII:

Function SendCommand(byRef NetStream as NetworkStream, byVal sToSend as String)
  Dim bData() as Byte = Encoding.ASCII.GetBytes(sToSend.ToCharArray)
  NetStream.Write(bData,0,bData.Length())
  Return GetResponse(NetStream)
End Function

La seconda funzione si occupa di recuperare la risposta (che arriva come Array di Bytes) e riconvertirla in forma più "umana", cioè come stringa:

Function GetResponse(byRef NetStream as NetworkStream)
  Dim bytes(TcpC.ReceiveBufferSize) As Byte
  NetStream.Read(bytes, 0, bytes.length)

  Dim ReturnData As String = Encoding.ASCII.GetString(bytes)
  Return ReturnData
End Function

Conclusioni

Siamo così riusciti ad interagire con un server di posta, ad accedere alla nostra casella, a vedere quanti messaggi abbiamo e quanto spazio occupano: il tutto da una pagina Web, scusate se è poco!

Infine potete divertirvi ad ampliare l'esempio mostrato per fargli controllare più caselle o per costruire una web mail completa o anche costruire un programmino "web-telnet" che permetta di collegarsi ad un qualunque tipo di server.

Il consiglio che posso darvi è di farne, a partire dal codice, una classe e di compilarla, così da riutilizzarla nell'ambito di più applicazioni (o pagine).

Spero che questo convinca anche i più scettici che ASP.NET non è solo un valido strumento per creare siti dinamici e interattivi, ma un linguaggio Orientato agli Oggetti a tutti gli effetti, capace di creare vere e proprie "applicazioni web", senza aver nulla da invidiare a piattaforme come Visual Basic.

Approfondimenti

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

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