URGENTE [:D]: Problema con "Telnet" in VB.NET 2005

venerdì 07 settembre 2007 - 13.31

Caly82 Profilo | Newbie

Ciao a tutti,
ho un piccolo problema con telnet utilizzato in windows Form.
Ho seguito i passaggi che ho trovato all'indirizzo: http://www.dotnethell.it/articles/POP3.aspx

Dunque, connessione e login funzionano, ma quando interrogo il server con: STAT o RETR n o LIST, mi ritorna questa stringa:
+OK POP3 server ready (7.3.110.2)<CC48E1495B1AD5C6B0AE3C1966F4DDEBDBF19ECD@mail-3.tiscali.it>
ogni volta ke lancio l'applicazione, questa parte di stringa è fissa ("+OK POP3 server ready (7.3.110.2)"), mentre questa ("<CC48E1495B1AD5C6B0AE3C1966F4DDEBDBF19ECD@mail-3.tiscali.it>") cambia ogni volta.

Le domande che ho da fare sono 3:
- Come faccio a recuperare questi valori?
- Come faccio a recuperare oggetto, mittente e testo?
- Come faccio a recuperare (possibilmente scaricandolo) l'allegato?

Vi ringrazio in anticipo, posto il codice che utilizzo:

Dim sckStreamSocket As System.Net.Sockets.NetworkStream
Dim sckTcpClient As New System.Net.Sockets.TcpClient
Dim server As String = "pop.tiscali.it"
Dim sckStream As Byte

'Apro la Connessione
sckTcpClient.Connect(server, 110)
sckStreamSocket = sckTcpClient.GetStream()

Dim byteServer(sckTcpClient.ReceiveBufferSize) As Byte
sckStreamSocket.Read(byteServer, 0, byteServer.Length)
Dim myString As String = ""
myString += System.Text.Encoding.ASCII.GetString(byteServer)
Label1.Text = "Connessione: " & Mid(myString, 2, 3)

'Login USER
Dim byteCommand() As Byte = System.Text.Encoding.ASCII.GetBytes("USER mio_user" + vbCrLf)
sckStreamSocket.Write(byteCommand, 0, byteCommand.Length)
myString += System.Text.Encoding.ASCII.GetString(byteServer)
Label2.Text = "User: " & Mid(myString, 2, 3)

'Login PASSWORD
byteCommand = System.Text.Encoding.ASCII.GetBytes("PASS mia_password" + vbCrLf)
sckStreamSocket.Write(byteCommand, 0, byteCommand.Length)
myString += System.Text.Encoding.ASCII.GetString(byteServer)
Label3.Text = "Password: " & Mid(myString, 2, 3)

'Interrogazioni
byteCommand = System.Text.Encoding.Unicode.GetBytes("LIST" + vbCrLf)
sckStreamSocket.Write(byteCommand, 0, byteCommand.Length)
myString += System.Text.Encoding.ASCII.GetString(byteServer)
Label4.Text = myString

'Chiudo la connessione
sckTcpClient.Close()

Brainkiller Profilo | Guru

>Le domande che ho da fare sono 3:
>- Come faccio a recuperare questi valori?
>- Come faccio a recuperare oggetto, mittente e testo?
>- Come faccio a recuperare (possibilmente scaricandolo) l'allegato?

Preparati a perdere molti giorni e notti di lavoro.
Si inizia facendo un LIST per recuperare gli ID di tutti i messaggi presenti in casella e poi per ogni messaggio bisogna fare un RETR <ID> per recuperare tutta l'e-mail.
E qui viene il bello.

L'attività di recupero oggetto, mittente, testo, ecc. te la devi fare tu a manina. Quindi leggerti e studiarti tutte le RFC dal POP3 in poi (http://www.faqs.org/rfcs/rfc1939.html) e collegate (come quelle della gestione degli allegati) e man mano estrapolare, codificare, ecc. le informazioni provenienti dal server.

Quest'attività viene svolta dietro le quinte da tutti i client di posta elettronica, come Outlook, Outlook Express, ecc. farlo da zero non è uno dei compiti più banali.

Eventualmente puoi utilizzare classi POP3 già pronte oppure usare Office Automation e quindi sfruttare ciò che ti mette a disposizione Outlook di Office e automatizzarlo con VBA.
CIao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Caly82 Profilo | Newbie

Grazie per la risposta,
penso che proverò a guardarmi come interagire con outlook, xkè ne ho bisogno subito!

Ciao ciao!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5