ruby-msg 1.5.1 → 1.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a44d1dd66134f46841a1842c8bcbbeffe895accf
4
+ data.tar.gz: 26e85df3e4ea78233a5ec04e78003318479f66e1
5
+ SHA512:
6
+ metadata.gz: 1501d2ba188801e3458db922d7992c15131a6405992d05c629baec93c80efb06b86ed93c56861ace5e8054684e3f7f9b1271528783559aa359a3008698af2aeb
7
+ data.tar.gz: a68b2f5c4f2e4a1a35abf0ff3da414f8afdf82af59d743b20f37791b6f14d4a91eb59365f22122beb75960cb022e8509bc34df6bc1fc1164df81d10270d4bf45
data/COPYING ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2007-2014 Charles Lowe
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
20
+
@@ -0,0 +1,104 @@
1
+ == 1.5.2 / 2014-08-20
2
+
3
+ - Move mime.rb file to avoid conflicts with mime_types gem (github #7,
4
+ blerins).
5
+ - Minor fix to mapitool for ruby >= 1.9.
6
+ - Alway require mapi/convert (indirect fix for missed step in README,
7
+ github #6).
8
+ - Various minor cleanups.
9
+
10
+ == 1.5.1 / 2012-07-03
11
+
12
+ - Fix handling of different body types (issue #14). Was breaking on
13
+ files without RTF content since 8933c26e, and also failing on files
14
+ where PR_BODY_HTML was a string rather than a stream.
15
+ - Move classes from RTF into Mapi::RTF (github #4).
16
+
17
+ == 1.5.0 / 2011-05-18
18
+
19
+ - Fixes for ruby 1.9.
20
+ - Move Mime into the Mapi module namespace (crowbot).
21
+ - Use ascii regex flag to avoid unicode probs (crowbot).
22
+
23
+ == 1.4.0 / 2008-10-12
24
+
25
+ - Initial simple msg test case.
26
+ - Update TODO, stripping out all the redundant ole stuff.
27
+ - Fix property set guids to use the new Ole::Types::Clsid type.
28
+ - Add block form of Msg.open
29
+ - Fix file requires for running tests individually.
30
+ - Update pst RangesIO subclasses for changes in ruby-ole.
31
+ - Merge initial pst reading code (converted from libpst).
32
+ - Pretty big pst refactoring, adding initial outlook 2003 pst support.
33
+ - Flesh out move to mapi to clean up the way pst hijacks the msg
34
+ classes currently.
35
+ - Add a ChangeLog :).
36
+ - Update README, by converting Home.wiki with wiki2rdoc converter.
37
+ - Separate out generic mapi object code from msg code, and separate out
38
+ conversion code.
39
+ - Add decent set of Mapi and Msg unit tests, approaching ~55% code coverage,
40
+ not including pst.
41
+ - Add TMail note conversion alternative, to eventually allow removal of
42
+ custom Mime class.
43
+ - Expose experimental pst support through renamed mapitool program.
44
+
45
+ == 1.3.1 / 2007-08-21
46
+
47
+ - Add fix for issue #2, and #4.
48
+ - Move ole code to ruby-ole project, and depend on it.
49
+
50
+ == 1.2.17 / 2007-05-13
51
+
52
+ (This was last release before splitting out ruby-ole. subsequent bug fix
53
+ point releases 1-3 were made directly on the gem, not reflected in the
54
+ repository, though the fixes were also forward-ported.)
55
+
56
+ - Update Ole::Storage backend, finalising api for split to separate
57
+ library.
58
+
59
+ == 1.2.16 / 2007-04-28
60
+
61
+ - Some minor fixes to msg parser.
62
+ - Extending RTF and body conversion support.
63
+ - Initial look at possible wmf conversion for embedded images.
64
+ - Add initial cli converter tool
65
+ - Add rdoc to ole/storage, and msg/properties
66
+ - Add streaming IO support to Ole::Storage, and use it in Msg::Properties
67
+ - Updates to test cases
68
+ - Add README, and update TODO
69
+ - Convert rtf support tools in c to small ruby class.
70
+ - Merge preliminary write support for Ole::Storage, as well as preliminary
71
+ filesystem api.
72
+
73
+ == 1.2.13 / 2007-01-22
74
+
75
+ - Nested msg support
76
+
77
+ == 1.2.10 / 2007-01-21
78
+
79
+ - Add initial vcard support.
80
+ - Implement a named properties map, for vcard conversion.
81
+ - Add orderedhash to Mime for keeping header order
82
+ - Fix line endings in lib/mime
83
+ - First released version
84
+
85
+ == <= 1.2.9 / 2007-01-11..2007-01-19
86
+
87
+ (Haven't bothered to note exact versions and dates - nothing here was released.
88
+ can look at history of lib/msg.rb to see exact VERSION at each commit.)
89
+
90
+ - Merged most of the named property work.
91
+ - Added some test files.
92
+ - Update svn:ignore, to exclude test messages and ole files which I can't
93
+ release. Need to get some clean files for use in test cases.
94
+ Also excluding source to the mapitags files for the moment.
95
+ A lot of it is not redistributable
96
+ - Added a converter to extract embedded html in rtf. Downloaded somewhere,
97
+ source unknown.
98
+ - Minor fix to ole/storage.rb, after new OleDir#type behaviour
99
+ - Imported support.rb, replacing previously required std.rb
100
+ - Added initial support for parsing times in Msg::Properties.
101
+ - Imported some rtf decompression code and minor updates.
102
+ - Cleaned up the ole class a bit
103
+ - Fixed OleDir#data method using sb_blocks map (see POLE).
104
+
data/Rakefile CHANGED
@@ -1,77 +1,52 @@
1
- require 'rake/rdoctask'
1
+ require 'rubygems'
2
2
  require 'rake/testtask'
3
- require 'rake/packagetask'
4
- require 'rake/gempackagetask'
5
3
 
6
4
  require 'rbconfig'
7
5
  require 'fileutils'
8
6
 
9
- $:.unshift 'lib'
10
-
11
- require 'mapi/msg'
12
-
13
- PKG_NAME = 'ruby-msg'
14
- PKG_VERSION = Mapi::VERSION
7
+ spec = eval File.read('ruby-msg.gemspec')
15
8
 
16
9
  task :default => [:test]
17
10
 
18
- Rake::TestTask.new(:test) do |t|
11
+ Rake::TestTask.new do |t|
19
12
  t.test_files = FileList["test/test_*.rb"] - ['test/test_pst.rb']
20
13
  t.warning = false
21
14
  t.verbose = true
22
15
  end
23
16
 
24
17
  begin
25
- require 'rcov/rcovtask'
26
- # NOTE: this will not do anything until you add some tests
27
- desc "Create a cross-referenced code coverage report"
28
- Rcov::RcovTask.new do |t|
29
- t.test_files = FileList['test/test*.rb']
30
- t.ruby_opts << "-Ilib" # in order to use this rcov
31
- t.rcov_opts << "--xrefs" # comment to disable cross-references
32
- t.rcov_opts << "--exclude /usr/local/lib/site_ruby"
18
+ Rake::TestTask.new(:coverage) do |t|
19
+ t.test_files = FileList["test/test_*.rb"] - ['test/test_pst.rb']
20
+ t.warning = false
33
21
  t.verbose = true
22
+ t.ruby_opts = ['-rsimplecov -e "SimpleCov.start; load(ARGV.shift)"']
34
23
  end
35
24
  rescue LoadError
36
- # Rcov not available
37
- end
38
-
39
- Rake::RDocTask.new do |t|
40
- t.rdoc_dir = 'doc'
41
- t.title = "#{PKG_NAME} documentation"
42
- t.options += %w[--main README --line-numbers --inline-source --tab-width 2]
43
- t.rdoc_files.include 'lib/**/*.rb'
44
- t.rdoc_files.include 'README'
25
+ # SimpleCov not available
45
26
  end
46
27
 
47
- spec = Gem::Specification.new do |s|
48
- s.name = PKG_NAME
49
- s.version = PKG_VERSION
50
- s.summary = %q{Ruby Msg library.}
51
- s.description = %q{A library for reading and converting Outlook msg and pst files (mapi message stores).}
52
- s.authors = ["Charles Lowe"]
53
- s.email = %q{aquasync@gmail.com}
54
- s.homepage = %q{http://code.google.com/p/ruby-msg}
55
- s.rubyforge_project = %q{ruby-msg}
56
-
57
- s.executables = ['mapitool']
58
- s.files = FileList['data/*.yaml', 'Rakefile', 'README', 'FIXES']
59
- s.files += FileList['lib/**/*.rb', 'test/test_*.rb', 'bin/*']
60
-
61
- s.has_rdoc = true
62
- s.extra_rdoc_files = ['README']
63
- s.rdoc_options += ['--main', 'README',
64
- '--title', "#{PKG_NAME} documentation",
65
- '--tab-width', '2']
66
-
67
- s.add_dependency 'ruby-ole', '>=1.2.8'
68
- s.add_dependency 'vpim', '>=0.360'
28
+ begin
29
+ require 'rdoc/task'
30
+ RDoc::Task.new do |t|
31
+ t.rdoc_dir = 'doc'
32
+ t.rdoc_files.include 'lib/**/*.rb'
33
+ t.rdoc_files.include 'README', 'ChangeLog'
34
+ t.title = "#{PKG_NAME} documentation"
35
+ t.options += %w[--line-numbers --inline-source --tab-width 2]
36
+ t.main = 'README'
37
+ end
38
+ rescue LoadError
39
+ # RDoc not available or too old (<2.4.2)
69
40
  end
70
41
 
71
- Rake::GemPackageTask.new(spec) do |p|
72
- p.gem_spec = spec
73
- p.need_tar = false #true
74
- p.need_zip = false
75
- p.package_dir = 'build'
42
+ begin
43
+ require 'rubygems/package_task'
44
+ Gem::PackageTask.new(spec) do |t|
45
+ t.need_tar = true
46
+ t.need_zip = false
47
+ t.package_dir = 'build'
48
+ end
49
+ rescue LoadError
50
+ # RubyGems too old (<1.3.2)
76
51
  end
77
52
 
@@ -6,7 +6,6 @@ require 'optparse'
6
6
  require 'rubygems'
7
7
  require 'mapi/msg'
8
8
  require 'mapi/pst'
9
- require 'mapi/convert'
10
9
  require 'time'
11
10
 
12
11
  class Mapitool
@@ -107,7 +106,7 @@ class Mapitool
107
106
  # is the only one that can be robuslty un-quoted. evolution doesn't use this!
108
107
  f.puts "From mapitool@localhost #{Time.now.rfc2822}"
109
108
  #munge_headers mime, opts
110
- data.each do |line|
109
+ data.lines.each do |line|
111
110
  if line =~ /^>*From /o
112
111
  f.print '>' + line
113
112
  else
@@ -1,109 +1,5 @@
1
+ require 'mapi/version'
2
+ require 'mapi/base'
1
3
  require 'mapi/types'
2
4
  require 'mapi/property_set'
3
-
4
- module Mapi
5
- VERSION = '1.5.1'
6
-
7
- #
8
- # Mapi::Item is the base class used for all mapi objects, and is purely a
9
- # property set container
10
- #
11
- class Item
12
- attr_reader :properties
13
- alias props properties
14
-
15
- # +properties+ should be a PropertySet instance.
16
- def initialize properties
17
- @properties = properties
18
- end
19
- end
20
-
21
- # a general attachment class. is subclassed by Msg and Pst attachment classes
22
- class Attachment < Item
23
- def filename
24
- props.attach_long_filename || props.attach_filename
25
- end
26
-
27
- def data
28
- @embedded_msg || @embedded_ole || props.attach_data
29
- end
30
-
31
- # with new stream work, its possible to not have the whole thing in memory at one time,
32
- # just to save an attachment
33
- #
34
- # a = msg.attachments.first
35
- # a.save open(File.basename(a.filename || 'attachment'), 'wb')
36
- def save io
37
- raise "can only save binary data blobs, not ole dirs" if @embedded_ole
38
- data.each_read { |chunk| io << chunk }
39
- end
40
-
41
- def inspect
42
- "#<#{self.class.to_s[/\w+$/]}" +
43
- (filename ? " filename=#{filename.inspect}" : '') +
44
- (@embedded_ole ? " embedded_type=#{@embedded_ole.embedded_type.inspect}" : '') + ">"
45
- end
46
- end
47
-
48
- class Recipient < Item
49
- # some kind of best effort guess for converting to standard mime style format.
50
- # there are some rules for encoding non 7bit stuff in mail headers. should obey
51
- # that here, as these strings could be unicode
52
- # email_address will be an EX:/ address (X.400?), unless external recipient. the
53
- # other two we try first.
54
- # consider using entry id for this too.
55
- def name
56
- name = props.transmittable_display_name || props.display_name
57
- # dequote
58
- name[/^'(.*)'/, 1] or name rescue nil
59
- end
60
-
61
- def email
62
- props.smtp_address || props.org_email_addr || props.email_address
63
- end
64
-
65
- RECIPIENT_TYPES = { 0 => :orig, 1 => :to, 2 => :cc, 3 => :bcc }
66
- def type
67
- RECIPIENT_TYPES[props.recipient_type]
68
- end
69
-
70
- def to_s
71
- if name = self.name and !name.empty? and email && name != email
72
- %{"#{name}" <#{email}>}
73
- else
74
- email || name
75
- end
76
- end
77
-
78
- def inspect
79
- "#<#{self.class.to_s[/\w+$/]}:#{self.to_s.inspect}>"
80
- end
81
- end
82
-
83
- # i refer to it as a message (as does mapi), although perhaps Item is better, as its a more general
84
- # concept than a message, as used in Pst files. though maybe i'll switch to using
85
- # Mapi::Object as the base class there.
86
- #
87
- # IMessage essentially, but there's also stuff like IMAPIFolder etc. so, for this to form
88
- # basis for PST Item, it'd need to be more general.
89
- class Message < Item
90
- # these 2 collections should be provided by our subclasses
91
- def attachments
92
- raise NotImplementedError
93
- end
94
-
95
- def recipients
96
- raise NotImplementedError
97
- end
98
-
99
- def inspect
100
- str = %w[message_class from to subject].map do |key|
101
- " #{key}=#{props.send(key).inspect}"
102
- end.compact.join
103
- str << " recipients=#{recipients.inspect}"
104
- str << " attachments=#{attachments.inspect}"
105
- "#<#{self.class.to_s[/\w+$/]}#{str}>"
106
- end
107
- end
108
- end
109
-
5
+ require 'mapi/convert'
@@ -0,0 +1,103 @@
1
+ module Mapi
2
+ #
3
+ # Mapi::Item is the base class used for all mapi objects, and is purely a
4
+ # property set container
5
+ #
6
+ class Item
7
+ attr_reader :properties
8
+ alias props properties
9
+
10
+ # +properties+ should be a PropertySet instance.
11
+ def initialize properties
12
+ @properties = properties
13
+ end
14
+ end
15
+
16
+ # a general attachment class. is subclassed by Msg and Pst attachment classes
17
+ class Attachment < Item
18
+ def filename
19
+ props.attach_long_filename || props.attach_filename
20
+ end
21
+
22
+ def data
23
+ @embedded_msg || @embedded_ole || props.attach_data
24
+ end
25
+
26
+ # with new stream work, its possible to not have the whole thing in memory at one time,
27
+ # just to save an attachment
28
+ #
29
+ # a = msg.attachments.first
30
+ # a.save open(File.basename(a.filename || 'attachment'), 'wb')
31
+ def save io
32
+ raise "can only save binary data blobs, not ole dirs" if @embedded_ole
33
+ data.each_read { |chunk| io << chunk }
34
+ end
35
+
36
+ def inspect
37
+ "#<#{self.class.to_s[/\w+$/]}" +
38
+ (filename ? " filename=#{filename.inspect}" : '') +
39
+ (@embedded_ole ? " embedded_type=#{@embedded_ole.embedded_type.inspect}" : '') + ">"
40
+ end
41
+ end
42
+
43
+ class Recipient < Item
44
+ # some kind of best effort guess for converting to standard mime style format.
45
+ # there are some rules for encoding non 7bit stuff in mail headers. should obey
46
+ # that here, as these strings could be unicode
47
+ # email_address will be an EX:/ address (X.400?), unless external recipient. the
48
+ # other two we try first.
49
+ # consider using entry id for this too.
50
+ def name
51
+ name = props.transmittable_display_name || props.display_name
52
+ # dequote
53
+ name[/^'(.*)'/, 1] or name rescue nil
54
+ end
55
+
56
+ def email
57
+ props.smtp_address || props.org_email_addr || props.email_address
58
+ end
59
+
60
+ RECIPIENT_TYPES = { 0 => :orig, 1 => :to, 2 => :cc, 3 => :bcc }
61
+ def type
62
+ RECIPIENT_TYPES[props.recipient_type]
63
+ end
64
+
65
+ def to_s
66
+ if name = self.name and !name.empty? and email && name != email
67
+ %{"#{name}" <#{email}>}
68
+ else
69
+ email || name
70
+ end
71
+ end
72
+
73
+ def inspect
74
+ "#<#{self.class.to_s[/\w+$/]}:#{self.to_s.inspect}>"
75
+ end
76
+ end
77
+
78
+ # i refer to it as a message (as does mapi), although perhaps Item is better, as its a more general
79
+ # concept than a message, as used in Pst files. though maybe i'll switch to using
80
+ # Mapi::Object as the base class there.
81
+ #
82
+ # IMessage essentially, but there's also stuff like IMAPIFolder etc. so, for this to form
83
+ # basis for PST Item, it'd need to be more general.
84
+ class Message < Item
85
+ # these 2 collections should be provided by our subclasses
86
+ def attachments
87
+ raise NotImplementedError
88
+ end
89
+
90
+ def recipients
91
+ raise NotImplementedError
92
+ end
93
+
94
+ def inspect
95
+ str = %w[message_class from to subject].map do |key|
96
+ " #{key}=#{props.send(key).inspect}"
97
+ end.compact.join
98
+ str << " recipients=#{recipients.inspect}"
99
+ str << " attachments=#{attachments.inspect}"
100
+ "#<#{self.class.to_s[/\w+$/]}#{str}>"
101
+ end
102
+ end
103
+ end
@@ -1,5 +1,5 @@
1
1
  require 'base64'
2
- require 'mime'
2
+ require 'mapi/mime'
3
3
  require 'time'
4
4
 
5
5
  # there is still some Msg specific stuff in here.
@@ -3,7 +3,7 @@ require 'tmail'
3
3
 
4
4
  # these will be removed later
5
5
  require 'time'
6
- require 'mime'
6
+ require 'mapi/mime'
7
7
 
8
8
  # there is some Msg specific stuff in here.
9
9
 
File without changes
@@ -0,0 +1,3 @@
1
+ module Mapi
2
+ VERSION = '1.5.2'
3
+ end
@@ -0,0 +1,35 @@
1
+ $:.unshift File.dirname(__FILE__) + '/lib'
2
+ require 'mapi/version'
3
+
4
+ PKG_NAME = 'ruby-msg'
5
+ PKG_VERSION = Mapi::VERSION
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = PKG_NAME
9
+ s.version = PKG_VERSION
10
+ s.summary = %q{Ruby Msg library.}
11
+ s.description = %q{A library for reading and converting Outlook msg and pst files (mapi message stores).}
12
+ s.authors = ['Charles Lowe']
13
+ s.email = %q{aquasync@gmail.com}
14
+ s.homepage = %q{http://code.google.com/p/ruby-msg}
15
+ s.rubyforge_project = %q{ruby-msg}
16
+
17
+ s.executables = ['mapitool']
18
+ s.files = ['README', 'COPYING', 'Rakefile', 'ChangeLog', 'ruby-msg.gemspec']
19
+ s.files += Dir.glob('data/*.yaml')
20
+ s.files += Dir.glob('lib/**/*.rb')
21
+ s.files += Dir.glob('test/test_*.rb')
22
+ s.files += Dir.glob('bin/*')
23
+
24
+ s.has_rdoc = true
25
+ s.extra_rdoc_files = ['README', 'ChangeLog']
26
+ s.rdoc_options += [
27
+ '--main', 'README',
28
+ '--title', "#{PKG_NAME} documentation",
29
+ '--tab-width', '2'
30
+ ]
31
+
32
+ s.add_dependency 'ruby-ole', '>=1.2.8'
33
+ s.add_dependency 'vpim', '>=0.360'
34
+ end
35
+
@@ -1,10 +1,9 @@
1
1
  #! /usr/bin/ruby -w
2
2
 
3
- TEST_DIR = File.dirname __FILE__
4
- $: << "#{TEST_DIR}/../lib"
3
+ $: << File.dirname(__FILE__) + '/../lib'
5
4
 
6
5
  require 'test/unit'
7
- require 'mime'
6
+ require 'mapi/mime'
8
7
 
9
8
  class TestMime < Test::Unit::TestCase
10
9
  # test out the way it partitions a message into parts
metadata CHANGED
@@ -1,126 +1,109 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby-msg
3
- version: !ruby/object:Gem::Version
4
- hash: 1
5
- prerelease: false
6
- segments:
7
- - 1
8
- - 5
9
- - 1
10
- version: 1.5.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.5.2
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Charles Lowe
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2012-07-03 00:00:00 +10:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
11
+ date: 2014-08-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
22
14
  name: ruby-ole
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 15
30
- segments:
31
- - 1
32
- - 2
33
- - 8
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
34
19
  version: 1.2.8
35
20
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: vpim
39
21
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 731
46
- segments:
47
- - 0
48
- - 360
49
- version: "0.360"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.2.8
27
+ - !ruby/object:Gem::Dependency
28
+ name: vpim
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0.360'
50
34
  type: :runtime
51
- version_requirements: *id002
52
- description: A library for reading and converting Outlook msg and pst files (mapi message stores).
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0.360'
41
+ description: A library for reading and converting Outlook msg and pst files (mapi
42
+ message stores).
53
43
  email: aquasync@gmail.com
54
- executables:
44
+ executables:
55
45
  - mapitool
56
46
  extensions: []
57
-
58
- extra_rdoc_files:
47
+ extra_rdoc_files:
59
48
  - README
60
- files:
61
- - data/mapitags.yaml
62
- - data/types.yaml
63
- - data/named_map.yaml
64
- - Rakefile
49
+ - ChangeLog
50
+ files:
65
51
  - README
66
- - FIXES
52
+ - COPYING
53
+ - Rakefile
54
+ - ChangeLog
55
+ - ruby-msg.gemspec
67
56
  - bin/mapitool
57
+ - data/types.yaml
58
+ - data/mapitags.yaml
59
+ - data/named_map.yaml
68
60
  - lib/mapi.rb
69
- - lib/mime.rb
70
61
  - lib/orderedhash.rb
71
- - lib/mapi/rtf.rb
72
- - lib/mapi/property_set.rb
73
- - lib/mapi/convert/contact.rb
74
- - lib/mapi/convert/note-mime.rb
75
62
  - lib/mapi/convert/note-tmail.rb
76
- - lib/mapi/pst.rb
63
+ - lib/mapi/convert/note-mime.rb
64
+ - lib/mapi/convert/contact.rb
65
+ - lib/mapi/version.rb
77
66
  - lib/mapi/convert.rb
67
+ - lib/mapi/base.rb
68
+ - lib/mapi/property_set.rb
69
+ - lib/mapi/rtf.rb
78
70
  - lib/mapi/types.rb
71
+ - lib/mapi/mime.rb
72
+ - lib/mapi/pst.rb
79
73
  - lib/mapi/msg.rb
74
+ - test/test_convert_contact.rb
80
75
  - test/test_property_set.rb
81
- - test/test_convert_note.rb
82
76
  - test/test_mime.rb
83
- - test/test_convert_contact.rb
84
77
  - test/test_types.rb
85
78
  - test/test_msg.rb
86
- has_rdoc: true
79
+ - test/test_convert_note.rb
87
80
  homepage: http://code.google.com/p/ruby-msg
88
81
  licenses: []
89
-
82
+ metadata: {}
90
83
  post_install_message:
91
- rdoc_options:
84
+ rdoc_options:
92
85
  - --main
93
86
  - README
94
87
  - --title
95
88
  - ruby-msg documentation
96
89
  - --tab-width
97
- - "2"
98
- require_paths:
90
+ - '2'
91
+ require_paths:
99
92
  - lib
100
- required_ruby_version: !ruby/object:Gem::Requirement
101
- none: false
102
- requirements:
103
- - - ">="
104
- - !ruby/object:Gem::Version
105
- hash: 3
106
- segments:
107
- - 0
108
- version: "0"
109
- required_rubygems_version: !ruby/object:Gem::Requirement
110
- none: false
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- hash: 3
115
- segments:
116
- - 0
117
- version: "0"
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
118
103
  requirements: []
119
-
120
104
  rubyforge_project: ruby-msg
121
- rubygems_version: 1.3.7
105
+ rubygems_version: 2.0.14
122
106
  signing_key:
123
- specification_version: 3
107
+ specification_version: 4
124
108
  summary: Ruby Msg library.
125
109
  test_files: []
126
-
data/FIXES DELETED
@@ -1,56 +0,0 @@
1
- FIXES
2
-
3
- recent fixes based on importing results into evolution
4
-
5
- 1. was running into some issue with base64 encoded message/rfc822 attachments displaying
6
- as empty. encoding them as plain solved the issue (odd).
7
-
8
- 2. problem with a large percentage of emails, not displaying as mime. turned out to be
9
- all received from blackberry. further, turned out there was 2 content-type headers,
10
- "Content-Type", which I add, and "Content-type". normally my override works, but I
11
- need to handle it case insensitvely it would appear. more tricky, whats the story
12
- with these. fixing that will probably fix that whole class of issues there.
13
- evolution was renaming my second content type as X-Invalid-Content-Type or something.
14
-
15
- 3. another interesting one. had content-transfer-encoding set in the transport message
16
- headers. it was set to base64. i didn't override that, so evolution "decoded" my
17
- plaintext message into complete garbage.
18
- fix - delete content-transfer-encoding.
19
-
20
- 4. added content-location and content-id output in the mime handling of attachments
21
- to get some inline html/image mails to work properly.
22
- further, the containing mime content-type must be multipart/related, not multipart/mixed,
23
- at least for evolution, in order for the images to appear inline.
24
- could still improve in this area. if someone drags and drops in an image, it may
25
- be inline in the rtf version, but exchanges generates crappy html such that the image
26
- doesn't display inline. maybe i should correct the html output in these cases as i'm
27
- throwing away the rtf version.
28
-
29
- 5. note you may need wingdings installed. i had a lot of L and J appear in messages from
30
- outlook users. turns out its smilies in wingdings. i think its only if word is used
31
- as email editor and has autotext messing things up.
32
-
33
- 6. still unsure about how to do my "\r" handling.
34
-
35
- 7. need to join addresses with , instead of ; i think. evolution only shows the
36
- first one otherwise it appears, but all when they are , separated.
37
-
38
- 8. need to solve ole storage issues with the very large file using extra bat
39
- stuff.
40
-
41
- 9. retest a bit on evolution and thunderbird, and release. tested on a corups
42
- of >1000 msg files, so should be starting to get pretty good quality.
43
-
44
- 10. longer term, things fall into a few basic categories:
45
-
46
- - non mail conversions (look further into vcard, ical et al support for other
47
- types of msg)
48
- - further tests and robustness for what i handle now. ie, look into corner
49
- cases covered so far, and work on the mime code. fix random charset encoding
50
- issues, in the various weird mime ways, do header wrapping etc etc.
51
- check fidelity of conversions, and capture some more properties as headers,
52
- such as importance which i don't do yet.
53
- - fix that named property bug. tidy up warnings, exceptions.
54
- - extend conversion to make better html.
55
- this is longer term. as i don't use the rtf, i need to make my html better.
56
- emulating some rtf things. harder, not important atm.