2012-01-20 60 views
1

我正在Adobe Air中編寫一個應用程序以從Gmail獲取電子郵件。我能夠連接到SSL併成功登錄,但是我無法繼續進行取回電子郵件。我認爲這是因爲SSL會話不被維護。每次我發出命令時,會話都會丟失。Adob​​e Air javascript imap ssl - 無法發出「list」命令 - 錯誤的未知命令

要獲取電子郵件,我必須發送一個登錄請求,然後發送一條LIST "" "*"命令。但由於連接中斷後登錄,當我發送LIST命令,它開始作爲一個新的連接,並認爲我沒有登錄,並給出錯誤信息a001 BAD Unknown command gf9if3619638pbc.89

代碼如下。任何想法來實現這個,或者這甚至可能嗎?

var socket; 
function login() { 
    socket = new air.SecureSocket(); 
    socket.connect('imap.gmail.com', 993); 
    socket.writeUTFBytes("\n"+"a001 LOGIN username password"); 
    socket.addEventListener(air.ProgressEvent.SOCKET_DATA, socketDataHandler); 
} 

function fetchEmail() { 
    socket = new air.SecureSocket(); 
    socket.connect(server, port); 
    socket.writeUTFBytes("\n"+'a001 LIST "" "*"'); 
} 

回答

0

這不是特定於SSL/TLS的。在這裏,當你想要取得電子郵件時,當你想記錄和另一個新的連接時,你正在創建一個新的連接。就服務器而言,這是兩個完全不同的連接。在fetchEmail()刪除這些行應該是一個開始:

socket = new air.SecureSocket(); 
socket.connect(server, port); 

此外,你需要確保你得到的LOGIN命令(或實際上任何其它命令)後適當的響應代碼進行下一前命令。

+0

感謝您的迴應!是的,你是正確的,我也試過,通過使用相同的套接字對象,但我沒有得到任何迴應..我能夠得到正確的響應代碼登錄獨自和其他任何命令都沒有工作,我沒有得到任何迴應進一步。這是完美的,沒有SSL,但不適用於SSL。我在[link](testyourproject.com/sampl_ssl.html)有代碼。第74行是請求郵箱列表的地方..任何想法都會非常有幫助..謝謝! – Jaikar