Python2.6 xmpp Jabber错误

时间:2009-08-19 17:06:21

标签: python xmpp

我正在使用xmpp和python,我想创建一个简单的客户端来与gmail通信 ID。

#!/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 个答案:

答案 0 :(得分:6)

Here就是它在my PyTalk client上的表现。

请勿忘记用户ID中的@ gmail.com。

我认为您应该尝试在5222端口上连接talk.google.com。

还尝试为auth指定一个ressource。

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" ))

顺便说一句,它看起来非常接近Philip Answer

答案 1 :(得分: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类的构造函数上为第二个参数传递 debug = []

cl  = xmpp.Client(jid.getDomain(), debug=[])

答案 2 :(得分: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"

答案 3 :(得分:0)

我认为您需要在发送第一条消息之前致电sendInitPresence

...
cnx.auth(login,pwd, 'botty')
cnx.sendInitPresence()
cnx.send( xmpp.Message( "YourFriend@gmail.com" ,"Hello World form Python" ) )