2011-01-15 13 views
0
tcpClient.Connect(hostName, 110) 
    Dim networkStream As NetworkStream = tcpClient.GetStream() 
    Dim bytes(tcpClient.ReceiveBufferSize) As Byte 
    Dim sendBytes As Byte() 

    networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) 

    sendBytes = Encoding.ASCII.GetBytes("User " + userName + vbCrLf) 
    networkStream.Write(sendBytes, 0, sendBytes.Length) 

    sTemp = networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) 

    sendBytes = Encoding.ASCII.GetBytes("Pass " + userPassword + vbCrLf) 
    networkStream.Write(sendBytes, 0, sendBytes.Length) 

    sTemp = networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) 

    sendBytes = Encoding.ASCII.GetBytes("STAT" + vbCrLf) 
    networkStream.Write(sendBytes, 0, sendBytes.Length) 

    sTemp = networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) 

    sendBytes = Encoding.ASCII.GetBytes("RETR " + messageNumber + vbCrLf) 
    networkStream.Write(sendBytes, 0, sendBytes.Length) 

    networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) 
    returnMessage = Encoding.ASCII.GetString(bytes) 
    EmailContent.Text = returnMessage 

    sendBytes = Encoding.ASCII.GetBytes("QUIT" + vbCrLf) 
    networkStream.Write(sendBytes, 0, sendBytes.Length) 

    tcpClient.Close() 
Catch ex As Exception 
    EmailContent.Text = "Could not retrieve email or your inbox is empty" 
End Try 

答えて

1

エラーを添加しないチェックとストレートポートは、(任意の元ではありませんでしたけれども、いずれか):

networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) 

sendBytes = Encoding.ASCII.GetBytes("A001 LOGIN " + userName + " " + userPassword + vbCrLf) 
networkStream.Write(sendBytes, 0, sendBytes.Length) 

sTemp = networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) 

sendBytes = Encoding.ASCII.GetBytes("A002 SELECT INBOX" + vbCrLf) 
networkStream.Write(sendBytes, 0, sendBytes.Length) 

sTemp = networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) 

sendBytes = Encoding.ASCII.GetBytes("A003 FETCH " + messageNumber + " (BODY.PEEK[])" + vbCrLf) 
networkStream.Write(sendBytes, 0, sendBytes.Length) 

networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) 
returnMessage = Encoding.ASCII.GetString(bytes) 
EmailContent.Text = returnMessage 

sendBytes = Encoding.ASCII.GetBytes("A004 LOGOUT" + vbCrLf) 
networkStream.Write(sendBytes, 0, sendBytes.Length) 
+0

(あなたはとは異なる方法でEmailContent.Textを後処理する必要がありますことに注意してくださいそれをPOP3バージョンで後処理しなければなりませんでした。) – dkarp

0

元の質問には、生のネットワーク通信を使用しています。ある程度の容量でIMAP接続が必要な場合は、.NET IMAPライブラリlike those listed hereを使用して簡単に作業できます。

しかし、あなた自身がコードを書く必要がある学問的なやり方であれば、この答えを使って既存のオープンソースIMAP .NETライブラリパッケージのソースコードをダウンロードして、必要なコードをコピーして貼り付けることができますライセンスと目的に応じて)。

.NETライブラリは、VB.NET、C#と他の言語との間で互換的に使用できます。したがって、プリコンパイルされたライブラリを使用する場合は、ほとんどの言語タグを無視できます。

関連する問題