2012-08-25 33 views
1

我正在使用Visual Basic 2010專業版,我正在開發一個軟件,它的一部分是獲取[收件箱]電子郵件,但我甚至無法從服務器獲得響應。如何在VB.net中使用IMAP命令從Gmail.com服務器獲取響應?

我做下列步驟操作:

  1. Made sure that my Gmail.com account is working with IMAP
  2. 我使用兩步驗證方法,所以我用我的應用程序的密碼。
  3. 我使用這個代碼:

    Imports System.Net.Sockets 
        Imports System.IO 
        Imports System.Text   
        Imports System.Net.Security 
    
        Public Class ImapClient1 
    
        Dim ServerNm As String 
        Dim UsrNm As String 
        Dim PassStr As String 
        Dim _IntPort As Integer 
        Dim ImapClient As New Net.Sockets.TcpClient 
        Dim NetworkS_stream As NetworkStream 
        Dim m_sslStream As SslStream 
        Dim Read_Stream As StreamReader 
        Dim StatResp As String 
    
        Function Login(ByVal Sstream As SslStream, ByVal Server_Command As String) 
        ImapClient = New TcpClient(ServerNm, _IntPort) 
        NetworkS_stream = ImapClient.GetStream 'Read the stream 
        Sstream = New SslStream(NetworkS_stream) 
        Dim Read_Stream2 = New StreamReader(Sstream) 
        Server_Command = Server_Command ' + vbCrLf 
        m_buffer = System.Text.Encoding.ASCII.GetBytes(Server_Command.ToCharArray()) 
        Sstream.Write(m_buffer, 0, m_buffer.Length) 
        Dim Server_Reponse As String 
        Server_Reponse = Read_Stream2.ReadLine() 
        Return Server_Reponse 
    
    End Function 
    

當我使用這個功能登錄用[按鈕],如:

 ListBox1.Items.Clear() 
     StatResp = Login(m_sslStream, "LOGIN " + UsrNm + " " + PassStr + " ") & vbCrLf 
     ListBox1.Items.Add(StatResp) 

我什麼也得不到的[列表框]控制。

+0

我使用(SslStream),因爲Gmail.com使用安全連接SSl。 – Cudus

回答

0

每個IMAP命令都需要在其前面加上一個「Tag」,它是一個需要生成的隨機字母數字字符串。通常,登錄過程如下所示:

A001 LOGIN user password 
A002 SELECT INBOX 
A003 ... 
... 
A010 LOGOUT 
+0

我很抱歉,你甚至打擾自己閱讀這個問題嗎? – Cudus

+0

我做過了,我在代碼中看到,您將字符串手動連接在一起以創建命令,而不提供作爲命令不可或缺部分的標記。服務器將只返回對你的代碼的'壞'迴應。但是,你的問題是你甚至無法連接?我沒有看到你的服務器名和端口號的定義。你有沒有檢查過你是否可以使用像socat這樣的網絡客戶端進行連接? – Max

+0

問題出在服務器本身,應用程序正在工作。 @Max謝謝。 – Cudus

相關問題