用python创建ActiveSync SendMail请求

2024-06-01 00:05:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python实现简单的EAS客户机功能,并利用这个库:https://code.google.com/p/py-eas-client/

我可以成功地配置、文件夹同步、同步和获取以阅读邮件和下载附件。该库为这些命令提供了内置函数,但没有用于SendMail。所以我正在尝试自己实现SendMail:

def sendmail(self):
    send_url = self.add_parameters(self.get_url(),
                                   {"Cmd": "SendMail", "User": self.username, "DeviceId": self.device_id,
                                    "DeviceType": self.device_type})
    d = self.agent.request(
        'POST',
        send_url,
        Headers({'User-Agent': ['python-EAS-Client 1.0'],
                 'Host': [self.server],
                 'MS-ASProtocolVersion': [self.server_version],
                 'X-MS-PolicyKey': [str(self.policy_key)],
                 'Content-Type': ["application/vnd.ms-sync.wbxml"],
                 'Authorization': [self.authorization_header()]}),
        SendMailProducer())
    d.addCallback(self.wbxml_response)
    return d



下面是SendMail wbxml生产者:

^{pr2}$



在德布XML.py,我必须添加对ComposeMail命名空间的支持:

{ # Page 3 - ComposeMail
            "name":"ComposeMail",
                0x05: ('SendMail', None),
                0x10: ('Mime', None),
                0x11: ('ClientId', None)
            }



使用这个我得到了503错误响应。我几乎可以肯定我没有正确地准备wbxml。如果我可以成功地获得一个策略密钥,有没有更简单的方法来执行python中的activesyncsendmail?我找不到任何其他方式来编码wbxml。谢谢你的帮助。


Tags: pyselfnonesendurl客户机serverdevice