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>"
nextSe 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.closeCome 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 FunctionLa 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 FunctionConclusioni
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
- Scarica l'allegato con gli esempi (2 KB)
- ASPITALIA.Pop3, classe in C# con supporto completo a tutti i comandi POP3
- Post Office Protocol (POP3) RFC 1939
3 pagine in totale: <<Indietro 1 2 [3]
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Utilità

Stampa
Download



