Skip to content

Commit d5c113b

Browse files
committed
Add .gitignore and update docs.
git-svn-id: https://ruby-msg.googlecode.com/svn/trunk@135 c30d66de-b626-0410-988f-81f6512a6d81
1 parent c4910bd commit d5c113b

File tree

4 files changed

+58
-40
lines changed

4 files changed

+58
-40
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
build
2+
coverage
3+
doc

README

Lines changed: 50 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
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

1814
I 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

2420
Broad 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

6770
There is also a fairly complete and easy to use high level library
6871
access:
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

106119
For 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

Rakefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ spec = Gem::Specification.new do |s|
4848
s.name = PKG_NAME
4949
s.version = PKG_VERSION
5050
s.summary = %q{Ruby Msg library.}
51-
s.description = %q{A library for reading Outlook msg files, and for converting them to RFC2822 emails.}
51+
s.description = %q{A library for reading and converting Outlook msg and pst files (mapi message stores).}
5252
s.authors = ["Charles Lowe"]
5353
s.email = %q{aquasync@gmail.com}
5454
s.homepage = %q{http://code.google.com/p/ruby-msg}
@@ -64,7 +64,7 @@ spec = Gem::Specification.new do |s|
6464
'--title', "#{PKG_NAME} documentation",
6565
'--tab-width', '2']
6666

67-
s.add_dependency 'ruby-ole', '>=1.2.4'
67+
s.add_dependency 'ruby-ole', '>=1.2.8'
6868
s.add_dependency 'vpim', '>=0.360'
6969
end
7070

TODO

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
= Newer Msg
22

3+
* a lot of the doc is out of sync given the Mapi:: changes lately. need to
4+
fix.
5+
36
* extend msgtool with support for the other kinds of msg files. things like,
47
- dump properties to yaml / xml (with option on how the keys should be dumped).
58
should be fairly easy to implement. hash, with array of attach & recips.

0 commit comments

Comments
 (0)