1

私のシナリオでは、交換メッセージの 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

しかし、可能なすべてのプロパティを取得するには、上記のコードと同様のアプローチを使用する必要があります。

4

1 に答える 1

0

おそらく、データを読み取った後、次のようなことをする必要があります。

using (var ereader = new TnefReader (new MemoryStream (buffer, false))) {
    // now start all over again and read the properties...
}
于 2014-05-01T19:14:48.980 に答える