使用Python发送XMPP消息

时间:2013-02-27 07:47:22

标签: python xmpp sendmessage

我正在尝试使用Python发送XMPP消息,但我无法让它工作。它似乎在认证步骤失败了。我从上一个问题中提取了这个示例,并设置了一个gmail帐户进行测试。

import xmpp

username = 'randomtest603@gmail.com'
passwd = 'ThePass123'
to='randomtest604@gmail.com'
msg='hello :)'

client = xmpp.Client('gmail.com')
client.connect(server=('talk.google.com',5223))
client.auth(username, passwd, 'botty')
client.sendInitPresence()
message = xmpp.Message(to, msg)
message.setAttr('type', 'chat')
client.send(message)

有很多调试输出,但这是告诉我失败的部分

DEBUG: socket       sent  <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">cmFuZG9tdGVzdDYwM0BnbWFpbC5jb21AZ21haWwuY29tAHJhbmRvbXRlc3Q2MDNAZ21haWwuY29tAFRoZVBhc3MxMjM=</auth>
DEBUG: socket       got   <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
  <invalid-authzid/>
  </failure>
  </stream:stream>
DEBUG: dispatcher   ok    Got urn:ietf:params:xml:ns:xmpp-sasl/failure stanza
DEBUG: dispatcher   ok    Dispatching failure stanza with type-> props->  [u'urn:ietf:params:xml:ns:xmpp-sasl'] id->None
DEBUG: sasl         error Failed SASL authentification: <invalid-authzid />

但是我最后也得到了这个

DEBUG: socket       sent  <presence id="2" />
DEBUG: socket       sent  <message to="randomtest604@gmail.com" type="chat" id="3">
  <body>hello :)</body>
  </message>

我试过这个xmpppy和sleekxmpp,结果是一样的。这个区域对我来说是新的,所以我可能犯了一个新手的错误,任何人都有任何想法?

感谢

1 个答案:

答案 0 :(得分:3)

您的问题不是特定于python的,也不是特定于库的。当您致电xmpp.Client('gmail.com')时,您将用户名的域名部分指定为“gmail.com”。因此,您应该从您正在使用的用户名中省略它。

修改你的第三行:

username = 'randomtest603'

它应该可以工作(在为此测试生成应用程序专用密码之后我用我自己的帐户尝试了它,只有当我从用户名中省略'@ gmail.com'时它才有用,否则我会得到与你相同的错误)