我正在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 "" "*"');
}
答案 0 :(得分:0)
这不是特定于SSL / TLS。在这里,当您想要记录时,您正在创建新连接,而当您想要获取电子邮件时,则创建另一个新连接。就服务器而言,这是两个完全不同的连接。在fetchEmail()
中删除这些行应该是一个开始:
socket = new air.SecureSocket();
socket.connect(server, port);
此外,在继续执行下一个命令之前,您需要确保在LOGIN
命令(或任何其他命令)之后获得相应的响应代码。