4

Pythonでxmppを使用していて、GmailIDと通信するための単純なクライアントを作成したいと思います。

#!/usr/bin/python
import xmpp

login = 'Your.Login' # @gmail.com 
pwd   = 'YourPassword'

cnx = xmpp.Client('gmail.com')
cnx.connect( server=('talk.google.com',5223) )
cnx.auth(login,pwd, 'botty')

cnx.send( xmpp.Message( "YourFriend@gmail.com" ,"Hello World form Python" ) )

最後の行を実行すると、例外が発生します

IOError:サーバーから切断されました。

また、他のステートメントを実行すると、コンソールにデバッグメッセージが表示されます。

何が問題になる可能性があり、どうすれば解決できますか?

4

4 に答える 4

6

これが私のPyTalkクライアントでどのように行われたかです。

userIDの@gmail.comを忘れないでください。

5222ポートでtalk.google.comに接続してみてください。

また、認証用のリソースを指定してみてください。

import xmpp
import sys

userID   = 'Your.Login@gmail.com' 
password = 'YourPassword'
ressource = 'Script'

jid  = xmpp.protocol.JID(userID)
jabber     = xmpp.Client(jid.getDomain(), debug=[])

connection = jabber.connect(('talk.google.com',5222))
if not connection:
    sys.stderr.write('Could not connect\n')
else:
    sys.stderr.write('Connected with %s\n' % connection)

auth = jabber.auth(jid.getNode(), password, ressource)
if not auth:
    sys.stderr.write("Could not authenticate\n")
else:
    sys.stderr.write('Authenticate using %s\n' % auth)

jabber.sendInitPresence(requestRoster=1)
jabber.send(xmpp.Message( "YourFriend@gmail.com" ,"Hello World form Python" ))

ちなみに、フィリップアンサーからはとても近くに見えます

于 2009-10-09T04:31:51.923 に答える
1

このコードスニペットを試してください。簡単にするために、エラー条件は処理しませんでした。

import xmpp

login = 'Your.Login' # @gmail.com 
pwd   = 'YourPassword'

jid = xmpp.protocol.JID(login)
cl  = xmpp.Client(jid.getDomain(), debug=[])
if cl.connect(('talk.google.com',5223)):
    print "Connected"
else:
    print "Connectioned failed"

if cl.auth(jid.getNode(), pwd):
    cl.sendInitPresence()
    cl.send(xmpp.Message( "YourFriend@gmail.com" ,"Hello World form Python" ))
else:
    print "Authentication failed"


デバッグメッセージをオフにするには、Clientクラスのコンストラクターの2番目のパラメーターにdebug=[]を渡します。

cl  = xmpp.Client(jid.getDomain(), debug=[])
于 2009-08-23T12:14:06.510 に答える
1

私はあなたがこれを書かなければならないと思います。xmpppy 0.5.0rc1を使用してpython 2.7でテストし、ITを非常にうまく機能させます:P :):

import xmpp

login = 'your mail@gmail.com' # @gmail.com 
pwd   = 'your pass'
text='Hello worlD!'
tojid='your friend @gmail.com'



jid = xmpp.protocol.JID(login)
cl  = xmpp.Client(jid.getDomain(), debug=[])
if cl.connect(('talk.google.com',5223)):
    print "Connected"

else:
    print "Connectioned failed"

if cl.auth(jid.getNode(), pwd):
    cl.sendInitPresence()
    cl.send(xmpp.protocol.Message(tojid,text))
else:
    print "Authentication failed"
于 2010-10-25T07:49:01.573 に答える
0

sendInitPresence最初のメッセージを送信する前に電話する必要があると思います:

...
cnx.auth(login,pwd, 'botty')
cnx.sendInitPresence()
cnx.send( xmpp.Message( "YourFriend@gmail.com" ,"Hello World form Python" ) )
于 2009-08-19T17:13:15.223 に答える