mail 1.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of mail might be problematic. Click here for more details.

Files changed (107) hide show
  1. data/.gitignore +4 -0
  2. data/Manifest.txt +106 -0
  3. data/README.rdoc +441 -0
  4. data/Rakefile +38 -0
  5. data/lib/mail.rb +86 -0
  6. data/lib/mail/attachment.rb +90 -0
  7. data/lib/mail/body.rb +149 -0
  8. data/lib/mail/configuration.rb +90 -0
  9. data/lib/mail/core_extensions.rb +6 -0
  10. data/lib/mail/core_extensions/blank.rb +41 -0
  11. data/lib/mail/core_extensions/nil.rb +15 -0
  12. data/lib/mail/core_extensions/string.rb +31 -0
  13. data/lib/mail/elements/address.rb +293 -0
  14. data/lib/mail/elements/address_list.rb +62 -0
  15. data/lib/mail/elements/content_disposition_element.rb +34 -0
  16. data/lib/mail/elements/content_transfer_encoding_element.rb +21 -0
  17. data/lib/mail/elements/content_type_element.rb +39 -0
  18. data/lib/mail/elements/date_time_element.rb +26 -0
  19. data/lib/mail/elements/envelope_from_element.rb +34 -0
  20. data/lib/mail/elements/message_ids_element.rb +29 -0
  21. data/lib/mail/elements/mime_version_element.rb +26 -0
  22. data/lib/mail/elements/phrase_list.rb +21 -0
  23. data/lib/mail/elements/received_element.rb +30 -0
  24. data/lib/mail/encodings/base64.rb +17 -0
  25. data/lib/mail/encodings/encodings.rb +24 -0
  26. data/lib/mail/encodings/quoted_printable.rb +26 -0
  27. data/lib/mail/envelope.rb +35 -0
  28. data/lib/mail/field.rb +202 -0
  29. data/lib/mail/field_list.rb +33 -0
  30. data/lib/mail/fields/bcc_field.rb +40 -0
  31. data/lib/mail/fields/cc_field.rb +40 -0
  32. data/lib/mail/fields/comments_field.rb +41 -0
  33. data/lib/mail/fields/common/common_address.rb +62 -0
  34. data/lib/mail/fields/common/common_date.rb +35 -0
  35. data/lib/mail/fields/common/common_field.rb +128 -0
  36. data/lib/mail/fields/common/common_message_id.rb +35 -0
  37. data/lib/mail/fields/content_description_field.rb +15 -0
  38. data/lib/mail/fields/content_disposition_field.rb +34 -0
  39. data/lib/mail/fields/content_id_field.rb +50 -0
  40. data/lib/mail/fields/content_transfer_encoding_field.rb +28 -0
  41. data/lib/mail/fields/content_type_field.rb +50 -0
  42. data/lib/mail/fields/date_field.rb +44 -0
  43. data/lib/mail/fields/from_field.rb +40 -0
  44. data/lib/mail/fields/in_reply_to_field.rb +42 -0
  45. data/lib/mail/fields/keywords_field.rb +22 -0
  46. data/lib/mail/fields/message_id_field.rb +70 -0
  47. data/lib/mail/fields/mime_version_field.rb +42 -0
  48. data/lib/mail/fields/optional_field.rb +11 -0
  49. data/lib/mail/fields/received_field.rb +49 -0
  50. data/lib/mail/fields/references_field.rb +42 -0
  51. data/lib/mail/fields/reply_to_field.rb +40 -0
  52. data/lib/mail/fields/resent_bcc_field.rb +40 -0
  53. data/lib/mail/fields/resent_cc_field.rb +40 -0
  54. data/lib/mail/fields/resent_date_field.rb +16 -0
  55. data/lib/mail/fields/resent_from_field.rb +40 -0
  56. data/lib/mail/fields/resent_message_id_field.rb +20 -0
  57. data/lib/mail/fields/resent_sender_field.rb +48 -0
  58. data/lib/mail/fields/resent_to_field.rb +40 -0
  59. data/lib/mail/fields/return_path_field.rb +34 -0
  60. data/lib/mail/fields/sender_field.rb +48 -0
  61. data/lib/mail/fields/structured_field.rb +32 -0
  62. data/lib/mail/fields/subject_field.rb +14 -0
  63. data/lib/mail/fields/to_field.rb +40 -0
  64. data/lib/mail/fields/unstructured_field.rb +27 -0
  65. data/lib/mail/header.rb +213 -0
  66. data/lib/mail/mail.rb +120 -0
  67. data/lib/mail/message.rb +648 -0
  68. data/lib/mail/network/deliverable.rb +42 -0
  69. data/lib/mail/network/retrievable.rb +63 -0
  70. data/lib/mail/parsers/address_lists.rb +61 -0
  71. data/lib/mail/parsers/address_lists.treetop +19 -0
  72. data/lib/mail/parsers/content_disposition.rb +358 -0
  73. data/lib/mail/parsers/content_disposition.treetop +45 -0
  74. data/lib/mail/parsers/content_transfer_encoding.rb +179 -0
  75. data/lib/mail/parsers/content_transfer_encoding.treetop +25 -0
  76. data/lib/mail/parsers/content_type.rb +507 -0
  77. data/lib/mail/parsers/content_type.treetop +58 -0
  78. data/lib/mail/parsers/date_time.rb +111 -0
  79. data/lib/mail/parsers/date_time.treetop +11 -0
  80. data/lib/mail/parsers/envelope_from.rb +188 -0
  81. data/lib/mail/parsers/envelope_from.treetop +32 -0
  82. data/lib/mail/parsers/message_ids.rb +42 -0
  83. data/lib/mail/parsers/message_ids.treetop +15 -0
  84. data/lib/mail/parsers/mime_version.rb +141 -0
  85. data/lib/mail/parsers/mime_version.treetop +19 -0
  86. data/lib/mail/parsers/phrase_lists.rb +42 -0
  87. data/lib/mail/parsers/phrase_lists.treetop +15 -0
  88. data/lib/mail/parsers/received.rb +68 -0
  89. data/lib/mail/parsers/received.treetop +11 -0
  90. data/lib/mail/parsers/rfc2045.rb +406 -0
  91. data/lib/mail/parsers/rfc2045.treetop +35 -0
  92. data/lib/mail/parsers/rfc2822.rb +5005 -0
  93. data/lib/mail/parsers/rfc2822.treetop +402 -0
  94. data/lib/mail/parsers/rfc2822_obsolete.rb +3607 -0
  95. data/lib/mail/parsers/rfc2822_obsolete.treetop +241 -0
  96. data/lib/mail/part.rb +120 -0
  97. data/lib/mail/patterns.rb +42 -0
  98. data/lib/mail/utilities.rb +142 -0
  99. data/lib/mail/version.rb +10 -0
  100. data/lib/mail/version_specific/multibyte.rb +62 -0
  101. data/lib/mail/version_specific/multibyte/chars.rb +701 -0
  102. data/lib/mail/version_specific/multibyte/exceptions.rb +8 -0
  103. data/lib/mail/version_specific/multibyte/unicode_database.rb +71 -0
  104. data/lib/mail/version_specific/ruby_1_8.rb +61 -0
  105. data/lib/mail/version_specific/ruby_1_8_string.rb +88 -0
  106. data/lib/mail/version_specific/ruby_1_9.rb +49 -0
  107. metadata +192 -0
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+
3
+ module Mail #:nodoc:
4
+ module Multibyte #:nodoc:
5
+ # Raised when a problem with the encoding was found.
6
+ class EncodingError < StandardError; end
7
+ end
8
+ end
@@ -0,0 +1,71 @@
1
+ # encoding: utf-8
2
+
3
+ module Mail #:nodoc:
4
+ module Multibyte #:nodoc:
5
+ # Holds data about a codepoint in the Unicode database
6
+ class Codepoint
7
+ attr_accessor :code, :combining_class, :decomp_type, :decomp_mapping, :uppercase_mapping, :lowercase_mapping
8
+ end
9
+
10
+ # Holds static data from the Unicode database
11
+ class UnicodeDatabase
12
+ ATTRIBUTES = :codepoints, :composition_exclusion, :composition_map, :boundary, :cp1252
13
+
14
+ attr_writer(*ATTRIBUTES)
15
+
16
+ def initialize
17
+ @codepoints = Hash.new(Codepoint.new)
18
+ @composition_exclusion = []
19
+ @composition_map = {}
20
+ @boundary = {}
21
+ @cp1252 = {}
22
+ end
23
+
24
+ # Lazy load the Unicode database so it's only loaded when it's actually used
25
+ ATTRIBUTES.each do |attr_name|
26
+ class_eval(<<-EOS, __FILE__, __LINE__)
27
+ def #{attr_name} # def codepoints
28
+ load # load
29
+ @#{attr_name} # @codepoints
30
+ end # end
31
+ EOS
32
+ end
33
+
34
+ # Loads the Unicode database and returns all the internal objects of UnicodeDatabase.
35
+ def load
36
+ begin
37
+ @codepoints, @composition_exclusion, @composition_map, @boundary, @cp1252 = File.open(self.class.filename, 'rb') { |f| Marshal.load f.read }
38
+ rescue Exception => e
39
+ raise IOError.new("Couldn't load the Unicode tables for UTF8Handler (#{e.message}), ActiveSupport::Multibyte is unusable")
40
+ end
41
+
42
+ # Redefine the === method so we can write shorter rules for grapheme cluster breaks
43
+ @boundary.each do |k,_|
44
+ @boundary[k].instance_eval do
45
+ def ===(other)
46
+ detect { |i| i === other } ? true : false
47
+ end
48
+ end if @boundary[k].kind_of?(Array)
49
+ end
50
+
51
+ # define attr_reader methods for the instance variables
52
+ class << self
53
+ attr_reader(*ATTRIBUTES)
54
+ end
55
+ end
56
+
57
+ # Returns the directory in which the data files are stored
58
+ def self.dirname
59
+ File.dirname(__FILE__) + '/../values/'
60
+ end
61
+
62
+ # Returns the filename for the data file for this version
63
+ def self.filename
64
+ File.expand_path File.join(dirname, "unicode_tables.dat")
65
+ end
66
+ end
67
+
68
+ # UniCode Database
69
+ UCD = UnicodeDatabase.new
70
+ end
71
+ end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+ module Mail
3
+ class Ruby18
4
+ require 'base64'
5
+
6
+ # Escapes any parenthesis in a string that are unescaped. This can't
7
+ # use the Ruby 1.9.1 regexp feature of negative look behind so we have
8
+ # to do two replacement, first unescape everything, then re-escape it
9
+ def Ruby18.escape_paren( str )
10
+ re = /\\\)/
11
+ str = str.gsub(re) { |s| ')'}
12
+ re = /\\\(/
13
+ str = str.gsub(re) { |s| '('}
14
+ re = /([\(\)])/ # Only match unescaped parens
15
+ str.gsub(re) { |s| '\\' + s }
16
+ end
17
+
18
+ def Ruby18.paren( str )
19
+ str = $1 if str =~ /^\((.*)?\)$/
20
+ str = escape_paren( str )
21
+ '(' + str + ')'
22
+ end
23
+
24
+ def Ruby18.decode_base64(str)
25
+ Base64.decode64(str)
26
+ end
27
+
28
+ def Ruby18.encode_base64(str)
29
+ Base64.encode64(str)
30
+ end
31
+
32
+ def Ruby18.has_constant?(klass, string)
33
+ klass.constants.include?( string )
34
+ end
35
+
36
+ def Ruby18.get_constant(klass, string)
37
+ klass.const_get( string )
38
+ end
39
+
40
+ def Ruby18.b_encode(str, encoding)
41
+ # Ruby 1.8 requires an encoding to work
42
+ raise ArgumentError, "Must supply an encoding" if encoding.nil?
43
+ return str if str.ascii_only?
44
+ encoding = encoding.to_s.upcase.gsub('_', '-')
45
+ string = Encodings::Base64.encode(str)
46
+ "=?#{encoding}?B?#{string.chomp}?="
47
+ end
48
+
49
+ def Ruby18.q_encode(str, encoding)
50
+ # Ruby 1.8 requires an encoding to work
51
+ raise ArgumentError, "Must supply an encoding" if encoding.nil?
52
+ return str if str.ascii_only?
53
+ encoding = encoding.to_s.upcase.gsub('_', '-')
54
+ string = Encodings::QuotedPrintable.encode(str)
55
+ "=?#{encoding}?Q?#{string.chomp}?="
56
+ end
57
+
58
+ end
59
+
60
+
61
+ end
@@ -0,0 +1,88 @@
1
+ # encoding: utf-8
2
+ # :nodoc:
3
+ # OK... serious code smell in here... I just took the whole multibyte_chars code out of
4
+ # ActiveSupport.... hacked it to fit... like a mallet bashing a square peg... the thing
5
+ # fits in the hole... really!
6
+ #
7
+ # Bah... I'll get the first gem out and we'll fix this up.
8
+ require File.join(File.dirname(__FILE__), 'multibyte')
9
+
10
+ module Mail
11
+
12
+ # Taken from Rails::Mail::Multibyte
13
+ module Multibyte
14
+
15
+ unless '1.9'.respond_to?(:force_encoding)
16
+ # == Multibyte proxy
17
+ #
18
+ # +mb_chars+ is a multibyte safe proxy for string methods.
19
+ #
20
+ # In Ruby 1.8 and older it creates and returns an instance of the Mail::Multibyte::Chars class which
21
+ # encapsulates the original string. A Unicode safe version of all the String methods are defined on this proxy
22
+ # class. If the proxy class doesn't respond to a certain method, it's forwarded to the encapsuled string.
23
+ #
24
+ # name = 'Claus Müller'
25
+ # name.reverse #=> "rell??M sualC"
26
+ # name.length #=> 13
27
+ #
28
+ # name.mb_chars.reverse.to_s #=> "rellüM sualC"
29
+ # name.mb_chars.length #=> 12
30
+ #
31
+ # In Ruby 1.9 and newer +mb_chars+ returns +self+ because String is (mostly) encoding aware. This means that
32
+ # it becomes easy to run one version of your code on multiple Ruby versions.
33
+ #
34
+ # == Method chaining
35
+ #
36
+ # All the methods on the Chars proxy which normally return a string will return a Chars object. This allows
37
+ # method chaining on the result of any of these methods.
38
+ #
39
+ # name.mb_chars.reverse.length #=> 12
40
+ #
41
+ # == Interoperability and configuration
42
+ #
43
+ # The Chars object tries to be as interchangeable with String objects as possible: sorting and comparing between
44
+ # String and Char work like expected. The bang! methods change the internal string representation in the Chars
45
+ # object. Interoperability problems can be resolved easily with a +to_s+ call.
46
+ #
47
+ # For more information about the methods defined on the Chars proxy see Mail::Multibyte::Chars. For
48
+ # information about how to change the default Multibyte behaviour see Mail::Multibyte.
49
+ def mb_chars
50
+ if Mail::Multibyte.proxy_class.wants?(self)
51
+ Mail::Multibyte.proxy_class.new(self)
52
+ else
53
+ self
54
+ end
55
+ end
56
+
57
+ # Returns true if the string has UTF-8 semantics (a String used for purely byte resources is unlikely to have
58
+ # them), returns false otherwise.
59
+ def is_utf8?
60
+ Mail::Multibyte::Chars.consumes?(self)
61
+ end
62
+
63
+ unless '1.8.7 and later'.respond_to?(:chars)
64
+ def chars
65
+ Mail::Deprecation.warn('String#chars has been deprecated in favor of String#mb_chars.', caller)
66
+ mb_chars
67
+ end
68
+ end
69
+
70
+ else
71
+ def mb_chars #:nodoc
72
+ self
73
+ end
74
+
75
+ def is_utf8? #:nodoc
76
+ case encoding
77
+ when Encoding::UTF_8
78
+ valid_encoding?
79
+ when Encoding::ASCII_8BIT, Encoding::US_ASCII
80
+ dup.force_encoding(Encoding::UTF_8).valid_encoding?
81
+ else
82
+ false
83
+ end
84
+ end
85
+ end
86
+ end
87
+
88
+ end
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+ module Mail
3
+ class Ruby19
4
+
5
+ # Escapes any parenthesis in a string that are unescaped this uses
6
+ # a Ruby 1.9.1 regexp feature of negative look behind
7
+ def Ruby19.escape_paren( str )
8
+ re = /(?<!\\)([\(\)])/ # Only match unescaped parens
9
+ str.gsub(re) { |s| '\\' + s }
10
+ end
11
+
12
+ def Ruby19.paren( str )
13
+ str = $1 if str =~ /^\((.*)?\)$/
14
+ str = escape_paren( str )
15
+ '(' + str + ')'
16
+ end
17
+
18
+ def Ruby19.decode_base64(str)
19
+ str.unpack( 'm' ).first.force_encoding(Encoding::BINARY)
20
+ end
21
+
22
+ def Ruby19.encode_base64(str)
23
+ [str].pack( 'm' )
24
+ end
25
+
26
+ def Ruby19.has_constant?(klass, string)
27
+ klass.constants.include?( string.to_sym )
28
+ end
29
+
30
+ def Ruby19.get_constant(klass, string)
31
+ klass.const_get( string.to_sym )
32
+ end
33
+
34
+ def Ruby19.b_encode(str, encoding = nil)
35
+ return str if str.ascii_only?
36
+ encoding = str.encoding.to_s
37
+ string = Encodings::Base64.encode(str)
38
+ "=?#{encoding}?B?#{string.chomp}?="
39
+ end
40
+
41
+ def Ruby19.q_encode(str, encoding = nil)
42
+ return str if str.ascii_only?
43
+ encoding = str.encoding.to_s
44
+ string = Encodings::QuotedPrintable.encode(str)
45
+ "=?#{encoding}?Q?#{string.chomp}?="
46
+ end
47
+
48
+ end
49
+ end
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mail
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mikel Lindsaar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-25 00:00:00 +11:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: treetop
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "1.4"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: mime-types
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "1.0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.2.9
44
+ version:
45
+ description: A really Ruby Mail handler.
46
+ email: raasdnil@gmail.com
47
+ executables: []
48
+
49
+ extensions: []
50
+
51
+ extra_rdoc_files:
52
+ - README.rdoc
53
+ files:
54
+ - ./.gitignore
55
+ - ./Manifest.txt
56
+ - ./README.rdoc
57
+ - ./Rakefile
58
+ - ./lib/mail.rb
59
+ - ./lib/mail/attachment.rb
60
+ - ./lib/mail/body.rb
61
+ - ./lib/mail/configuration.rb
62
+ - ./lib/mail/core_extensions/blank.rb
63
+ - ./lib/mail/core_extensions/nil.rb
64
+ - ./lib/mail/core_extensions/string.rb
65
+ - ./lib/mail/core_extensions.rb
66
+ - ./lib/mail/elements/address.rb
67
+ - ./lib/mail/elements/address_list.rb
68
+ - ./lib/mail/elements/content_disposition_element.rb
69
+ - ./lib/mail/elements/content_transfer_encoding_element.rb
70
+ - ./lib/mail/elements/content_type_element.rb
71
+ - ./lib/mail/elements/date_time_element.rb
72
+ - ./lib/mail/elements/envelope_from_element.rb
73
+ - ./lib/mail/elements/message_ids_element.rb
74
+ - ./lib/mail/elements/mime_version_element.rb
75
+ - ./lib/mail/elements/phrase_list.rb
76
+ - ./lib/mail/elements/received_element.rb
77
+ - ./lib/mail/encodings/base64.rb
78
+ - ./lib/mail/encodings/encodings.rb
79
+ - ./lib/mail/encodings/quoted_printable.rb
80
+ - ./lib/mail/envelope.rb
81
+ - ./lib/mail/field.rb
82
+ - ./lib/mail/field_list.rb
83
+ - ./lib/mail/fields/bcc_field.rb
84
+ - ./lib/mail/fields/cc_field.rb
85
+ - ./lib/mail/fields/comments_field.rb
86
+ - ./lib/mail/fields/common/common_address.rb
87
+ - ./lib/mail/fields/common/common_date.rb
88
+ - ./lib/mail/fields/common/common_field.rb
89
+ - ./lib/mail/fields/common/common_message_id.rb
90
+ - ./lib/mail/fields/content_description_field.rb
91
+ - ./lib/mail/fields/content_disposition_field.rb
92
+ - ./lib/mail/fields/content_id_field.rb
93
+ - ./lib/mail/fields/content_transfer_encoding_field.rb
94
+ - ./lib/mail/fields/content_type_field.rb
95
+ - ./lib/mail/fields/date_field.rb
96
+ - ./lib/mail/fields/from_field.rb
97
+ - ./lib/mail/fields/in_reply_to_field.rb
98
+ - ./lib/mail/fields/keywords_field.rb
99
+ - ./lib/mail/fields/message_id_field.rb
100
+ - ./lib/mail/fields/mime_version_field.rb
101
+ - ./lib/mail/fields/optional_field.rb
102
+ - ./lib/mail/fields/received_field.rb
103
+ - ./lib/mail/fields/references_field.rb
104
+ - ./lib/mail/fields/reply_to_field.rb
105
+ - ./lib/mail/fields/resent_bcc_field.rb
106
+ - ./lib/mail/fields/resent_cc_field.rb
107
+ - ./lib/mail/fields/resent_date_field.rb
108
+ - ./lib/mail/fields/resent_from_field.rb
109
+ - ./lib/mail/fields/resent_message_id_field.rb
110
+ - ./lib/mail/fields/resent_sender_field.rb
111
+ - ./lib/mail/fields/resent_to_field.rb
112
+ - ./lib/mail/fields/return_path_field.rb
113
+ - ./lib/mail/fields/sender_field.rb
114
+ - ./lib/mail/fields/structured_field.rb
115
+ - ./lib/mail/fields/subject_field.rb
116
+ - ./lib/mail/fields/to_field.rb
117
+ - ./lib/mail/fields/unstructured_field.rb
118
+ - ./lib/mail/header.rb
119
+ - ./lib/mail/mail.rb
120
+ - ./lib/mail/message.rb
121
+ - ./lib/mail/network/deliverable.rb
122
+ - ./lib/mail/network/retrievable.rb
123
+ - ./lib/mail/parsers/address_lists.rb
124
+ - ./lib/mail/parsers/address_lists.treetop
125
+ - ./lib/mail/parsers/content_disposition.rb
126
+ - ./lib/mail/parsers/content_disposition.treetop
127
+ - ./lib/mail/parsers/content_transfer_encoding.rb
128
+ - ./lib/mail/parsers/content_transfer_encoding.treetop
129
+ - ./lib/mail/parsers/content_type.rb
130
+ - ./lib/mail/parsers/content_type.treetop
131
+ - ./lib/mail/parsers/date_time.rb
132
+ - ./lib/mail/parsers/date_time.treetop
133
+ - ./lib/mail/parsers/envelope_from.rb
134
+ - ./lib/mail/parsers/envelope_from.treetop
135
+ - ./lib/mail/parsers/message_ids.rb
136
+ - ./lib/mail/parsers/message_ids.treetop
137
+ - ./lib/mail/parsers/mime_version.rb
138
+ - ./lib/mail/parsers/mime_version.treetop
139
+ - ./lib/mail/parsers/phrase_lists.rb
140
+ - ./lib/mail/parsers/phrase_lists.treetop
141
+ - ./lib/mail/parsers/received.rb
142
+ - ./lib/mail/parsers/received.treetop
143
+ - ./lib/mail/parsers/rfc2045.rb
144
+ - ./lib/mail/parsers/rfc2045.treetop
145
+ - ./lib/mail/parsers/rfc2822.rb
146
+ - ./lib/mail/parsers/rfc2822.treetop
147
+ - ./lib/mail/parsers/rfc2822_obsolete.rb
148
+ - ./lib/mail/parsers/rfc2822_obsolete.treetop
149
+ - ./lib/mail/part.rb
150
+ - ./lib/mail/patterns.rb
151
+ - ./lib/mail/utilities.rb
152
+ - ./lib/mail/version.rb
153
+ - ./lib/mail/version_specific/ruby_1_8.rb
154
+ - ./lib/mail/version_specific/ruby_1_8_string.rb
155
+ - ./lib/mail/version_specific/ruby_1_9.rb
156
+ - ./lib/mail/version_specific/multibyte.rb
157
+ - ./lib/mail/version_specific/multibyte/chars.rb
158
+ - ./lib/mail/version_specific/multibyte/exceptions.rb
159
+ - ./lib/mail/version_specific/multibyte/unicode_database.rb
160
+ - README.rdoc
161
+ has_rdoc: true
162
+ homepage: http://github.com/mikel/mail
163
+ licenses: []
164
+
165
+ post_install_message:
166
+ rdoc_options:
167
+ - --charset=UTF-8
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: "0"
175
+ version:
176
+ required_rubygems_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: 1.2.0
181
+ version:
182
+ requirements:
183
+ - treetop, Treetop is a Ruby-based DSL for text parsing and interpretation
184
+ - mime/types, A list of a lot of Mime Types
185
+ - tlsmail, Used for encrypted SMTP, only if you are on RUBY_VERSION <= 1.8.6
186
+ rubyforge_project:
187
+ rubygems_version: 1.3.5
188
+ signing_key:
189
+ specification_version: 3
190
+ summary: Mail provides a nice Ruby DSL for making, sending and reading emails.
191
+ test_files: []
192
+