ActiveSync SendMail-Staus代码110已返回

本文关键字:返回 代码 SendMail-Staus ActiveSync | 更新日期: 2023-09-27 17:59:03

我正试图编写一个C#程序来模拟ActiveSync设备通过SendMail命令发送电子邮件。

每次我向exchange服务器发送请求时。。。响应发回状态代码110-未知服务器错误

在设备日志中,我看到以下异常:

---异常启动---异常类型:System.NotImplementedException异常消息:这种节点应该包含blob,而不是字符串异常级别:0异常堆栈跟踪:在Microsoft.Exchange.AirSync.Wbxml.AirSyncBlobXmlNode.set_InerText(字符串值)在Microsoft.Exchange.AirSync.Wbxml.WbxmlReader.FillXmlElement(XmlElement elem,Int32深度、布尔型elemIsSecureData、布尔型elemIsBlobData)在Microsoft.Exchange.AirSync.Wbxml.WbxmlReader.FillXmlElement(XmlElement elem,Int32深度、布尔型elemIsSecureData、布尔型elemIsBlobData)位于Microsoft.Exchange.AirSync.Wbxml.WbxmlReader.ReadXmlDocument()位于Microsoft.Exchange.AirSync.AirSyncRequest.get_XmlDocument()位于Microsoft.Exchange.AirSync.Command.get_XmlRequest()位于Microsoft.Exchange.AirSync.Command.WorkerThread()---异常结束---

我的XML在WBXML编码之前是这样的:

<?xml version="1.0" encoding="utf-8"?>
<SendMail xmlns="ComposeMail:">
  <ClientId>1234567890122525636247547456</ClientId>
  <Mime>From: scaletester261002@abc.com
To: scaletester361001@abc.com
Subject: Mail Subject
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Test body
</Mime>
</SendMail>

我可以成功发出Provision、FolderSync、Sync和Setting命令,但我不知道我在这个请求调用中做错了什么。

如果有人能为我指明正确的方向,我将不胜感激

提前谢谢!

ActiveSync SendMail-Staus代码110已返回

我终于找到了问题的答案。

mime标记的内容必须是CData,而不是文本。

酷,搞定了!近一年后,我破解了它,并在语音电子邮件中实现了ActiveSync SmartReply(我的产品,在这里偷偷添加了一个链接)。

因此,我发现我需要发送外部标记,然后使用WBXML编码器的opaque方法来编码mime字符串。我只是把它作为字符串传递,它为我用CDATA包起来。

这是我的代码(使用Mozilla jsas库,它是javascript而不是C#,但这可能是互联网上唯一可用的代码示例,所以不要因此向我开枪!):

        var replyMime = 'From: ' + self.info.emailAddress + ''n';
        replyMime += 'MIME-Version: 1.0'n';
        replyMime += 'Content-Type: text/plain'n';
        replyMime += 'To: ' + recipient + ''n';
        replyMime += 'Subject: RE: Test'n';
        replyMime += ''n';
        replyMime += replyText;
        var cm = ASCP.ComposeMail.Tags;
        var w = new WBXML.Writer('1.3', 1, 'UTF-8');
        w.stag(cm.SmartReply)
            .tag(cm.ClientId, guidNoDashes())
            .tag(cm.SaveInSentItems)
            .stag(cm.Source)
                .tag(cm.FolderId, self.info.activeSyncInboxId)
                .tag(cm.ItemId, itemId)
            .etag()
            .stag(cm.Mime)
                .opaque(replyMime)
            .etag()
        .etag();
        logWBXML(w);
        self.conn.postCommand(w, function (aError, aResponse) {
            logWBXML(aResponse);
            if (aError) {
                self.reportActiveSyncError(aError)
                return;
            }
            var e = new WBXML.EventParser();
            e.addEventListener([cm.SmartReply, cm.Status], function (node) {
                self.handleStatus("ComposeMail:SmartReply", node, true);
            });
            e.run(aResponse);
            callback(msg);
        });
    });

这里是fiddler数据包(使用EAS XML fiddler Inspector-如果没有,你必须得到它!)

<?xml version="1.0" encoding="utf-8"?>
<composemail:SmartReply xmlns:composemail="ComposeMail:">
  <composemail:ClientId>c5d53f22ce9885b3f293db25580e6f54</composemail:ClientId>
  <composemail:SaveInSentItems />
  <composemail:Source>
    <composemail:FolderId>9</composemail:FolderId>
    <composemail:ItemId>Qq7X_NiQVEqCD0BDywFI5QAAAAABDEKu1_zYkFRKgg9AQ8sBSOUAAHjcWVc1</composemail:ItemId>
  </composemail:Source>
  <composemail:MIME><![CDATA[From: mike@bewebnz.onmicrosoft.com
MIME-Version: 1.0
Content-Type: text/plain
To: mike@beweb.co.nz
Subject: RE: Test
Thanks!]]></composemail:MIME>
</composemail:SmartReply>