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 は IMAP over SSL 用です。

于 2013-02-25T05:50:34.810 に答える
0
  • onWrite は存在しません - これはバグであり、おそらくデバッグ ステートメントが停止する理由です。
  • ハンドラを定義した後に socket.connect() を移動してみてください。
  • ソケットへの書き込みを試みる前に、間隔と socket.isClosed() を使用してください。socket.isClosed() == false を取得したら、先に進みます。ソケットを取得したら、アプリの webinspector コンソールでも遊ぶことができます。

これですべての問題が解決するわけではありませんが、役立つ場合があります。socket.write を実行したときに正確に何を送信しているのかを確認するために、wireshark などのユーティリティを使用してみて、それをメール クライアントの送信内容と比較してみてください。

于 2013-02-28T23:59:18.160 に答える