我正在使用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:与服务器断开连接。
当我运行其他语句时,我在控制台中收到调试消息。
可能是什么问题,如何解决?
答案 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" ) )