Сбой запроса Sendmail на данных MIME

Я работаю над клиентом ActiveSync на C# и сталкиваюсь с проблемами при попытке отправить команду Sendmail на сервер. Я тестирую данные MIME в следующем формате:

    var testMsg = @"From: a@b.com
To: a@b.com
Cc:
Bcc:
Subject: From NSync
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
VGhpcyBpcyB0aGUgYm9keSB0ZXh0Lg==";

    var data = UTF8Encoding.UTF8.GetBytes(testMsg);

Когда сервер получает данные, я получаю это исключение в журнале клиента Exchange:

Command_WorkerThread_Exception : 
--- Exception start ---
Exception type: Microsoft.Exchange.AirSync.Wbxml.WbxmlException
Exception message: Invalid WBXML code/codepage from client
Exception level: 0
Exception stack trace:    at 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()
Inner exception follows...
Exception type: System.IndexOutOfRangeException
Exception message: Index was outside the bounds of the array.
Exception level: 1
Exception stack trace:    at Microsoft.Exchange.AirSync.Wbxml.WbxmlSchema30.GetName(Int32 tag)
   at Microsoft.Exchange.AirSync.Wbxml.WbxmlReader.FillXmlElement(XmlElement elem, Int32 depth, Boolean elemIsSecureData, Boolean elemIsBlobData)
   at Microsoft.Exchange.AirSync.Wbxml.WbxmlReader.FillXmlElement(XmlElement elem, Int32 depth, Boolean elemIsSecureData, Boolean elemIsBlobData)
   at Microsoft.Exchange.AirSync.Wbxml.WbxmlReader.ReadXmlDocument()
--- Exception end ---

1 ответ

Я понял, что моя проблема не имеет никакого отношения к отправляемому сообщению. Проблема была связана с тем, как мы сериализовали в WBXML.

При записи непрозрачных данных для содержимого MIME необходимо сначала указать длину данных, а затем массив байтов. Мой код для записи длины данных был выключен, что вызвало проблему.

Другие вопросы по тегам