我试图编写一个C#程序来模拟通过SendMail命令发送电子邮件的ActiveSync设备。
每次我向exchange发送请求时,server...the响应都会发回状态代码110 -未知服务器错误
在设备日志中,我看到以下异常:
-异常启动--异常类型: Microsoft.Exchange.AirSync.Wbxml.AirSyncBlobXmlNode.set_InnerText(String异常消息:这种节点应该包含一个blob,而不是一个字符串异常级别:0异常堆栈跟踪:在Microsoft.Exchange.AirSync.Wbxml.WbxmlReader.FillXmlElement(XmlElement elem,Int32深度,布尔elemIsSecureData,布尔elemIsBlobData)在Microsoft.Exchange.AirSync.Wbxml.WbxmlReader.FillXmlElement(XmlElement elem,Int32深度,布尔elemIsSecureData,Microsoft.Exchange.AirSync.Wbxml.WbxmlReader.ReadXmlDocument() at Microsoft.Exchange.AirSync.AirSyncRequest.get_XmlDocument() at Microsoft.Exchange.AirSync.Command.get_XmlRequest() at Microsoft.Exchange.AirSync.Command.WorkerThread() --异常结束--
在WBXML编码之前,我的XML如下所示:
<?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>我可以成功地发出提供、FolderSync、同步和设置命令,但是我不知道我在这个请求调用中做了什么错误。
如果有人能给我指明正确的方向,我会非常感激的。
提前谢谢你!
发布于 2014-04-21 15:20:22
我终于找到了问题的答案。
mime标记的内容需要是CData,而不是文本。
发布于 2016-07-05 22:49:38
太棒了,搞定了!将近一年后,我破解了它,并在口语电子邮件中实现了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);
});
});在这里,小提琴包(使用EAS XML Fiddler检查器 -你必须得到它,如果你没有它!)
<?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>https://stackoverflow.com/questions/23186917
复制相似问题