Adobe Air javascript imap ssl - 无法发出“list”命令 - 错误的未知命令

时间:2012-01-20 16:46:30

标签: javascript air adobe imap

我正在Adobe Air中编写一个应用程序来从Gmail获取电子邮件。我能够连接SSL并成功登录,但后来我无法继续获取电子邮件。我认为这是因为没有维护SSL会话。每次发出命令时,会话都会丢失。

要获取电子邮件,我必须发送登录请求,然后发送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 "" "*"');
}

1 个答案:

答案 0 :(得分:0)

这不是特定于SSL / TLS。在这里,当您想要记录时,您正在创建新连接,而当您想要获取电子邮件时,则创建另一个新连接。就服务器而言,这是两个完全不同的连接。在fetchEmail()中删除这些行应该是一个开始:

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

此外,在继续执行下一个命令之前,您需要确保在LOGIN命令(或任何其他命令)之后获得相应的响应代码。