Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

MSG/Structured Storage Problem

18 views
Skip to first unread message

dang

unread,
May 4, 2008, 9:44:56 PM5/4/08
to
Hi All,

I'm struggling with an issue with the structured file format for .MSG,
in particular, creating one from an existing message. So, the format,
in particular isn't the real problem (I think)... I've gone over the
MS-OXMSG document and I see where the problem is......

When I'm creating an MSG file (Using CreateTNEFStream on an Istorage
object) all is well. When I create one with one embedded message,
again all is well. When I have multiple emails attached, I get only
the last message. Now, the other messages are there, however under the
sub storage _attach_version1.0_#00000000\substg1.0_3701000D the only
stream under there is _properties_version1.0 and has a size of 0.

Again, the last embedded message attachment is fine, all the settings
are there. Click on the .MSG file and the original message has it's
props (definitely some extra named props - like task ones that don't
make sense), recipients, and all attachments.

I'm pretty sure it has something to do with the streams..... Here is
some psuedo code on what I'm doing. Anyone ever face this before or
have any sugestions?

Thanks,

Dan


CreateMSGFile(message)

fMsgFile = OpenStreamOnFile()

TNEFStream = CreateTNEFStream(TNEF_ENCODE | TNEF_PURE)

_Worker(message,TNEFStream)

TNEFStream.EncodeRecips()

message.GetPropList(tagArray)
ExcludeSomeProps(tagArray)

TNEFStream.AddProps(TNEF_PROP_CONTAINED | TNEF_PROP_INCLUDE |
TNEF_PROP_MESSAGE_ONLY,tagArray)

message.GetAttachTable()

for each atachment in attachmentTable

att = message.OpenAttachment

att.GetPropList(tagArray)
ExcludeSomeProps(tagArray)

TNEFStream.AddProps(TNEF_PROP_CONTAINED |
TNEF_PROP_INCLUDE,tagArray)


if att = embedded message
fMsgFile2 = OpenStreamOnFile()
TNEFStream2 = CreateTNEFStream(TNEF_ENCODE | TNEF_PURE)
message2 = att.Open(PR_ATTACH_DATA_OBJ)

_Worker(message2,TNEFStream2)

message2.Release()

TNEFStream2.Finish()
fMsgFile2.Commit()
TNEFStream2.Release()
fMsgFile.Seek(beggining of stream)

// Adds the IStreamTNEF as attachment data
TNEFStream.AddProps(TNEF_PROP_CONTAINED_TNEF |
TNEF_PROP_INCLUDE,PR_ATTACH_DATA_OBJ, fMsgFile)

att.Release()
end if
end for

// Clean up recipient objects, prop arrays but NOT fMsgFile2, that
is done later because
// it seems to crash if I release it earlier.
END _Worker


TNEFStream.Finish()

fMsgFile.Commit()

// NOW clean up all the fMsgFile2 items we collected

TNEFStream.Release()
fMsgFile.Release()

END

alona....@gmail.com

unread,
Jun 14, 2012, 12:58:52 PM6/14/12
to
Which development environment and what API are you using?
0 new messages