首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中创建ActiveSync SendMail请求

在python中创建ActiveSync SendMail请求
EN

Stack Overflow用户
提问于 2014-08-21 18:11:21
回答 1查看 959关注 0票数 2

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

我可以成功地提供,FolderSync,同步,并获取读取消息和下载附件。库为这些命令内置了函数,但没有为SendMail构建函数。因此,我试图自己实现SendMail:

代码语言:javascript
复制
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生产者:

代码语言:javascript
复制
class SendMailProducer(WBXMLProducer):
    def __init__(self):
        msg = """From: xyz@xyz.org
To: xyz@xyz.org
Subject: From NSync
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350
This is the body text."""
        wbdict = {
        "SendMail": [
            ("ClientId", "12312312312352173263123"),                   
            ("Mime", msg)
        ]
        }

        wb = convert_dict_to_wbxml(wbdict, default_page_num=3)
        print wb
        return WBXMLProducer.__init__(self, wb, verbose=True)

在dewbxml.py中,我必须添加对ComposeMail命名空间的支持:

代码语言:javascript
复制
{ # Page 3 - ComposeMail
            "name":"ComposeMail",
                0x05: ('SendMail', None),
                0x10: ('Mime', None),
                0x11: ('ClientId', None)
            }

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-30 17:50:09

知道了,这是wbxml的一个问题。使用库libwbxml可以很好地工作。但不幸的是,python中没有包装器

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25433201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档