ruby-msg 1.5.1 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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.