49 messaggi dal 31 gennaio 2004
Ciao a tutti,
ho provato lo script per leggere la posta su POP3, ma nel debug mi dà l'errore
"Riferimento a un oggetto non impostato su un'istanza di oggetto"
in corrispondenza dell riga di codice:
"NetStream.Write(bData, 0, bData.Length())"

Qualcuno sa spiegarmi che kavolo vuole??

Invio il codice:

Private Sub invia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles invia.Click
lblMessaggi.Text = ""
Readmail(host.Text, utente.Text, pwd.Text)
End Sub

'Manda il comando e restituisce la risposta
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

'Controlla se c'è una risposta e la restituisce
Function GetResponse(ByRef NetStream As NetworkStream)
Dim bytes(client.ReceiveBufferSize) As Byte

NetStream.Read(bytes, 0, bytes.Length)

'Restituisce i dati ricevuti
Dim ReturnData As String = Encoding.ASCII.GetString(bytes)
Return ReturnData

End Function

Function Readmail(ByVal mail_server As String, ByVal username As String, ByVal password As String)

Dim NetStream As NetworkStream, MyResponse As String

'Apre una connessione con il server di posta sulla porta 110
Try
client.Connect(mail_server, 110)
Catch MyEx As Exception
lblMessaggi.Text += "Errore nella connessione all'host: " & mail_server & " (porta 110)<br>" & _
"L'errore riportato è: " & MyEx.Message & "<br>Controlla e riprova<br>"
End Try

'Recupera la risposta
Try
NetStream = client.GetStream()
MyResponse = GetResponse(NetStream)
Catch MyEx As Exception
lblMessaggi.Text += "Si è verificato un errore!"
End Try

'Invia il nome dell'utente (account sul server)
MyResponse = SendCommand(NetStream, "user " & utente.Text & vbCrLf)

'Invia la password
MyResponse = SendCommand(NetStream, "pass " & pwd.Text & vbCrLf)

'Controlla se il collegamento è andato a buon fine
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)
client.Close()
Else
'Indica che il collegamento ha avuto successo
lblMessaggi.Text += "Utente correttamente collegato<BR><BR>"

'Richiede le statistiche dell'intera casella
MyResponse = SendCommand(NetStream, "stat" & vbCrLf)

Dim tmpArray() As String
tmpArray = Split(MyResponse, " ")

Dim thisMess As Integer
Dim NumMess As String = tmpArray(1)

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

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

Else
lblMessaggi.Text += "La casella è vuota"
End If

End If

'Chiudo la connessione con il server
MyResponse = SendCommand(NetStream, "QUIT" & vbCrLf)

'Chiudo la connessione TCP
client.Close()

End Function

Grazie.
Clarence wrote:
Ciao a tutti,
ho provato lo script per leggere la posta su POP3, ma nel debug mi dà l'errore
"Riferimento a un oggetto non impostato su un'istanza di oggetto" in corrispondenza dell riga di codice:
"NetStream.Write(bData, 0, bData.Length())"

Qualcuno sa spiegarmi che kavolo vuole??  !]

parti da questa mia classe nel lab, implementa maggiori funzionalità: http://lab.aspitalia.com/11/ASPItaliaPOP3.aspx

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.