11= Introduction
22
3- Generally, the goal of the project is the conversion of .msg files
4- into proper rfc2822 emails, independent of outlook, or any platform
5- dependencies etc . In fact its currently pure ruby, so it should be
6- easy to get started with .
3+ Generally, the goal of the project is to enable the conversion of
4+ msg and pst files into standards based formats, without reliance on
5+ outlook, or any platform dependencies . In fact its currently <em> pure
6+ ruby</em>, so it should be easy to get running .
77
8- There's also work-in-progess pst support (unfortunately outlook 97
9- only currently), based on libpst, making this project more of a general
10- ruby mapi message store conversion library now (though some significant
11- cleaning up has to happen first).
12-
13- It draws on <tt>msgconvert.pl</tt>, but tries to take a cleaner and
14- more complete approach. Neither are complete yet, however, but I think
15- that this project provides a clean foundation upon which to work on
16- a good converter for msg files for use in outlook migrations etc.
8+ It is targeted at people who want to migrate their PIM data from outlook,
9+ converting msg and pst files into rfc2822 emails, vCard contacts,
10+ iCalendar appointments etc. However, it also aims to be a fairly complete
11+ mapi message store manipulation library, providing a sane model for
12+ (currently read-only) access to msg and pst files (message stores).
1713
1814I am happy to accept patches, give commit bits etc.
1915
@@ -23,53 +19,60 @@ Please let me know how it works for you, any feedback would be welcomed.
2319
2420Broad features of the project:
2521
26- * Can be used as a general msg library, where conversion to and working
22+ * Can be used as a general mapi library, where conversion to and working
2723 on a standard format doesn't make sense.
2824
29- * Supports conversion of msg files to standard formats, like rfc2822
30- emails, vCards , etc.
25+ * Supports conversion of messages to standard formats, like rfc2822
26+ emails, vCard , etc.
3127
3228* Well commented, and easily extended.
3329
30+ * Basic RTF converter, for providing a readable body when only RTF
31+ exists (needs work)
32+
33+ * RTF decompression support included, as well as HTML extraction from
34+ RTF where appropriate (both in pure ruby, see <tt>lib/mapi/rtf.rb</tt>)
35+
36+ * Support for mapping property codes to symbolic names, with many
37+ included.
38+
39+ Features of the msg format message store:
40+
3441* Most key .msg structures are understood, and the only the parsing
3542 code should require minor tweaks. Most of remaining work is in achieving
3643 high-fidelity conversion to standards formats (see [TODO]).
3744
38- Features of the lower-level msg handling:
39-
4045* Supports both types of property storage (large ones in +substg+
41- files, and small ones in the +properties+ file) .
46+ files, and small ones in the +properties+ file.
4247
4348* Complete support for named properties in different GUID namespaces.
4449
45- * Support for mapping property codes to symbolic names, with many
46- included.
47-
48- * RTF decompression support included, as well as HTML extraction from
49- RTF where appropriate (both in pure ruby, see <tt>lib/msg/rtf.rb</tt>)
50-
51- * Initial RTF converter, for providing a readable body when only RTF
52- exists (needs work)
53-
5450* Initial support for handling embedded ole files, converting nested
5551 .msg files to message/rfc822 attachments, and serializing others
5652 as ole file attachments (allows you to view embedded excel for example).
5753
54+ Features of the pst format message store:
55+
56+ * Handles both Outlook 1997 & 2003 format pst files, both with no-
57+ and "compressible-" encryption.
58+
59+ * Understanding of the file format is still very superficial.
60+
5861= Usage
5962
60- At the command line, it is simple to convert individual msg files
61- to .eml, or to convert a batch to an mbox format file. See help for
62- details:
63+ At the command line, it is simple to convert individual msg or pst
64+ files to .eml, or to convert a batch to an mbox format file. See mapitool
65+ help for details:
6366
64- msgtool -c some_email.msg > some_email.eml
65- msgtool -m *.msg > mbox
67+ mapitool -si some_email.msg > some_email.eml
68+ mapitool -s *.msg > mbox
6669
6770There is also a fairly complete and easy to use high level library
6871access:
6972
70- require 'msg'
73+ require 'mapi/ msg'
7174
72- msg = Msg.open filename
75+ msg = Mapi:: Msg.open filename
7376
7477 # access to the 3 main data stores, if you want to poke with the msg
7578 # internals
@@ -101,6 +104,16 @@ support conversion to mime objects.
101104 # inclusive of attachments etc. (not ideal in memory, but its wip).
102105 puts mime.to_s
103106
107+ = Thanks
108+
109+ * The initial implementation of parsing msg files was based primarily
110+ on msgconvert.pl[http://www.matijs.net/software/msgconv/].
111+
112+ * The basis for the outlook 97 pst file was the source to +libpst+.
113+
114+ * The code for rtf decompression was implemented by inspecting the
115+ algorithm used in the +JTNEF+ project.
116+
104117= Other
105118
106119For more information, see
@@ -109,8 +122,7 @@ For more information, see
109122
110123* MsgDetails[http://code.google.com/p/ruby-msg/wiki/MsgDetails]
111124
112- * OleDetails [http://code.google.com/p/ruby-ole /wiki/OleDetails ]
125+ * PstDetails [http://code.google.com/p/ruby-msg /wiki/PstDetails ]
113126
114- * msgconv[http://www.matijs.net/software/msgconv/], the original
115- perl converter.
127+ * OleDetails[http://code.google.com/p/ruby-ole/wiki/OleDetails]
116128
0 commit comments