TNEF встроенный формат сообщения
В моем сценарии мне нужно прочитать MAPI-свойства сообщения обмена, чтобы получить информацию о вложениях, таких как имя, размер и т. Д. Для встроенных сообщений мне нужно получить больше информации.
Итак, мой вопрос, как прочитать информацию о встроенном сообщении?
Может ли кто-нибудь дать мне ссылку на статью или документацию спецификации о том, как прочитать встроенное сообщение сообщения на сервере Exchange. Я использую следующие классы:
- Microsoft.Exchange.Data.ContentTypes.Tnef.TnefReader
- Microsoft.Exchange.Data.Transport.Email.EmailMessage
Вот упрощенный код:
EmailMessage email;
MemoryStream mStream = new MemoryStream(File.ReadAllBytes(@"filename"));
byte[] buffer;
email = EmailMessage.Create(mStream);
using (TnefReader reader = new TnefReader(email.TnefPart.GetContentReadStream()))
{
//loop through all properties
while (reader.ReadNextAttribute())
{
if (reader.AttributeTag == TnefAttributeTag.Attachment)
{
bool IsEmbeddedMessage = false;
while (reader.PropertyReader.ReadNextProperty())
{
switch (reader.PropertyReader.PropertyTag.Id)
{
case TnefPropertyId.AttachMethod:
IsEmbeddedMessage = reader.PropertyReader.ReadValueAsInt64() == 5;
break;
case TnefPropertyId.AttachData:
if (IsEmbeddedMessage)
{
// here i read embedded message content,
// but do not know how to read its TNEF properties
buffer = new byte[reader.PropertyReader.RawValueLength];
reader.PropertyReader.ReadRawValue(buffer, 0,
reader.PropertyReader.RawValueLength);
}
break;
// ....
}
}
}
}
}
Я знаю, что могу использовать следующий код, чтобы получить некоторую информацию о встроенном сообщении:
email.Attachments[0].EmbeddedMessage
но мне нужно использовать подход, аналогичный приведенному выше коду, чтобы получить все возможные свойства.
1 ответ
Предположительно, вам нужно сделать что-то вроде этого после того, как вы прочитали данные:
using (var ereader = new TnefReader (new MemoryStream (buffer, false))) {
// now start all over again and read the properties...
}