使用Python进行XMPP时:xmpp.protocol.InvalidFrom: (u'invalid-from', '')
cl = xmpp.Client('myserver.com')
if not cl.connect(server=('mysefver.com',5223)):
raise IOError('cannot connect to server')
cl.RegisterHandler('message',messageHandler)
cl.auth('myemail@myserver.com', 'mypassword', 'statusbot')
cl.sendInitPresence()
msgtext = formatToDo(cal, 'text')
message = xmpp.Message('anotheremail@myserver.com', msgtext)
message.setAttr('type', 'chat')
cl.send(message)
当我尝试运行它时,出现了以下错误信息:
xmpp.protocol.InvalidFrom: (u'invalid-from', '')
为什么会这样 :(
1 个回答
4
根据XMPP协议的规范:
如果发送者的'from'地址和接收服务器在建立TCP连接时的主机名不匹配(或者与接收服务器主机名相关的任何经过验证的域名,比如接收服务器主机名的一个经过验证的子域名,或者由接收服务器托管的其他经过验证的域名),那么权威服务器必须生成一个流错误,并终止XML流和底层的TCP连接。
这基本上就是说,如果发送者没有被XMPP服务器识别,它就会回复这个错误信息。XMPP提供了一种注册机制:xmpp.features.register