помогите конвертировать pop3 соединение в imap - PullRequest
0 голосов
/ 15 января 2011
  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

Ответы [ 2 ]

1 голос
/ 15 января 2011

Прямой порт, без проверки ошибок (хотя в оригинале тоже не было):

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 голосов
/ 15 января 2011

Ваш исходный вопрос только с примером кода использует необработанную сетевую связь. Если вам требуется соединение IMAP в какой-то степени, вы можете использовать библиотеку .NET IMAP , подобную перечисленной здесь , чтобы сделать вашу жизнь проще.

Однако, если это для академической деятельности или ситуации, когда вы должны написать код самостоятельно, вы все равно можете использовать этот ответ для загрузки исходного кода существующих пакетов библиотек IMAP .NET с открытым исходным кодом, чтобы скопировать и вставить нужный код (в зависимости по лицензии и назначению).

.NET библиотеки могут использоваться взаимозаменяемо между VB.NET, C # и другими языками, поэтому вы можете игнорировать языковые теги по большей части при использовании предварительно скомпилированной библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...