0

我正在尝试使用 Ti.Network.TCPSocket 登录到 IMAP 服务器。

这很难,因为我没有收到任何反馈来调试。例如:

var socket = Ti.Network.createTCPSocket("imap.gmail.com", 993);
socket.connect();
socket.write("LOGIN user pass\r\n");

//event handlers
socket.onWrite(function(data) {
      Ti.API.debug('Written to socket: '+data);
});

socket.onError(function(data) {
      Ti.API.debug(data);
});

我没有得到任何回报。甚至没有错误或某种代码或确认某事正在实际发生。

我在这里做错了吗?

我怎样才能让这些偶数处理程序工作或套接字返回某种消息。

任何帮助,将不胜感激。

更新 - 完整代码

Ti.API.debug('Start A socket Connection');
var socket = Ti.Network.createTCPSocket("imap.gmail.com", 993);

Ti.API.debug('Connect the socket');
socket.connect();

Ti.API.debug('Socket Connected');
var command = uniqueid()+" LOGIN USER PASS\r\n";
socket.write(command);

//this is where the debug stops. No echo.
Ti.API.debug('Command Run');

socket.onWrite(function(data) {
    Ti.API.debug('Written to socket: '+data);
});

socket.onError(function(data) {
    Ti.API.debug('Error: '+data);
});

socket.onReadComplete(function(data) {
    Ti.API.debug('Here: '+data);
});

function uniqueid() {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 10; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4";
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
    s[8] = s[13] = s[18] = s[23];

    var uuid = s.join("");
    return uuid;
}
4

2 回答 2

0

端口 993 用于基于 SSL 的 IMAP。

于 2013-02-25T05:50:34.810 回答
0
  • onWrite 不存在 - 这是一个错误,可能是您的调试语句停止的原因。
  • 在定义处理程序后尝试将您的 socket.connect() 移动到。
  • 在尝试写入套接字之前使用间隔和 socket.isClosed() 。一旦你得到一个 socket.isClosed() == false,然后继续。一旦你有了套接字,你也可以在应用程序的 webinspector 控制台中使用它。

这不会解决您的所有问题,但可能会有所帮助。您可能想尝试使用像 wireshark 这样的实用程序来查看您在 socket.write 时发送的确切内容,并将其与您的电子邮件客户端发送的内容进行比较。

于 2013-02-28T23:59:18.160 回答