mail 2.1.5 → 2.1.5.1

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 (173) hide show
  1. data/CHANGELOG.rdoc +7 -0
  2. data/Rakefile +4 -7
  3. data/lib/mail.rb +17 -54
  4. data/lib/mail/elements.rb +15 -0
  5. data/lib/mail/{encodings/encodings.rb → encodings.rb} +1 -0
  6. data/lib/mail/encodings/7bit.rb +2 -0
  7. data/lib/mail/encodings/8bit.rb +2 -0
  8. data/lib/mail/encodings/base64.rb +2 -0
  9. data/lib/mail/encodings/binary.rb +2 -0
  10. data/lib/mail/encodings/quoted_printable.rb +2 -0
  11. data/lib/mail/field.rb +2 -0
  12. data/lib/mail/fields.rb +35 -0
  13. data/lib/mail/fields/bcc_field.rb +2 -0
  14. data/lib/mail/fields/cc_field.rb +2 -0
  15. data/lib/mail/fields/common/common_address.rb +99 -111
  16. data/lib/mail/fields/common/common_date.rb +30 -39
  17. data/lib/mail/fields/common/common_field.rb +39 -53
  18. data/lib/mail/fields/common/common_message_id.rb +30 -44
  19. data/lib/mail/fields/content_disposition_field.rb +2 -3
  20. data/lib/mail/fields/content_type_field.rb +2 -3
  21. data/lib/mail/fields/date_field.rb +2 -0
  22. data/lib/mail/fields/from_field.rb +2 -0
  23. data/lib/mail/fields/in_reply_to_field.rb +2 -0
  24. data/lib/mail/fields/message_id_field.rb +2 -0
  25. data/lib/mail/fields/optional_field.rb +2 -0
  26. data/lib/mail/fields/references_field.rb +2 -0
  27. data/lib/mail/fields/reply_to_field.rb +2 -0
  28. data/lib/mail/fields/resent_bcc_field.rb +2 -0
  29. data/lib/mail/fields/resent_cc_field.rb +2 -0
  30. data/lib/mail/fields/resent_date_field.rb +2 -0
  31. data/lib/mail/fields/resent_from_field.rb +2 -0
  32. data/lib/mail/fields/resent_message_id_field.rb +2 -0
  33. data/lib/mail/fields/resent_sender_field.rb +2 -0
  34. data/lib/mail/fields/resent_to_field.rb +2 -0
  35. data/lib/mail/fields/return_path_field.rb +2 -0
  36. data/lib/mail/fields/sender_field.rb +2 -0
  37. data/lib/mail/fields/structured_field.rb +2 -0
  38. data/lib/mail/fields/to_field.rb +2 -0
  39. data/lib/mail/fields/unstructured_field.rb +2 -0
  40. data/lib/mail/network.rb +9 -0
  41. data/lib/mail/network/delivery_methods/file_delivery.rb +2 -2
  42. data/lib/mail/patterns.rb +0 -16
  43. data/lib/mail/utilities.rb +132 -145
  44. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/History.txt +0 -0
  45. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/LICENSE +0 -0
  46. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/README.md +0 -0
  47. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Rakefile +0 -0
  48. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Treetop.tmbundle/Preferences/Comments.tmPreferences +0 -0
  49. data/lib/mail/vendor/treetop-1.4.3/Treetop.tmbundle/Snippets/grammar ___ end.tmSnippet b/data/lib/mail/vendor/treetop-1.4.4/Treetop.tmbundle/Snippets/grammar ___ → end.tmSnippet +0 -0
  50. data/lib/mail/vendor/treetop-1.4.3/Treetop.tmbundle/Snippets/rule ___ end.tmSnippet b/data/lib/mail/vendor/treetop-1.4.4/Treetop.tmbundle/Snippets/rule ___ → end.tmSnippet +0 -0
  51. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Treetop.tmbundle/Support/nibs/SyntaxTreeViewer.nib/designable.nib +0 -0
  52. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Treetop.tmbundle/Support/nibs/SyntaxTreeViewer.nib/keyedobjects.nib +0 -0
  53. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Treetop.tmbundle/Support/syntax_tree_viewer.rb +0 -0
  54. data/lib/mail/vendor/treetop-1.4.3/Treetop.tmbundle/Syntaxes/Treetop Grammar.tmLanguage b/data/lib/mail/vendor/treetop-1.4.4/Treetop.tmbundle/Syntaxes/Treetop → Grammar.tmLanguage +0 -0
  55. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/Treetop.tmbundle/info.plist +0 -0
  56. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/benchmark/seqpar.gnuplot +0 -0
  57. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/benchmark/seqpar.treetop +0 -0
  58. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/benchmark/seqpar_benchmark.rb +0 -0
  59. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/bin/tt +0 -0
  60. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/contributing_and_planned_features.markdown +0 -0
  61. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/grammar_composition.markdown +0 -0
  62. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/index.markdown +0 -0
  63. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/pitfalls_and_advanced_techniques.markdown +0 -0
  64. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/semantic_interpretation.markdown +0 -0
  65. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/site.rb +0 -0
  66. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/sitegen.rb +0 -0
  67. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/syntactic_recognition.markdown +0 -0
  68. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/doc/using_in_ruby.markdown +0 -0
  69. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/arithmetic.rb +0 -0
  70. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/arithmetic.treetop +0 -0
  71. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/arithmetic_node_classes.rb +0 -0
  72. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/arithmetic_test.rb +0 -0
  73. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/lambda_calculus +0 -0
  74. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/lambda_calculus.rb +0 -0
  75. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/lambda_calculus.treetop +0 -0
  76. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/lambda_calculus_node_classes.rb +0 -0
  77. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/lambda_calculus_test.rb +0 -0
  78. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/examples/lambda_calculus/test_helper.rb +0 -0
  79. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop.rb +1 -1
  80. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/bootstrap_gen_1_metagrammar.rb +0 -0
  81. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler.rb +0 -0
  82. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/grammar_compiler.rb +0 -0
  83. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/lexical_address_space.rb +0 -0
  84. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/metagrammar.rb +0 -0
  85. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/metagrammar.treetop +0 -0
  86. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes.rb +0 -0
  87. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/anything_symbol.rb +0 -0
  88. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/atomic_expression.rb +0 -0
  89. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/character_class.rb +0 -0
  90. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/choice.rb +0 -0
  91. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/declaration_sequence.rb +0 -0
  92. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/grammar.rb +0 -0
  93. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/inline_module.rb +0 -0
  94. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/nonterminal.rb +0 -0
  95. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/optional.rb +0 -0
  96. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/parenthesized_expression.rb +0 -0
  97. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/parsing_expression.rb +0 -0
  98. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/parsing_rule.rb +0 -0
  99. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/predicate.rb +0 -0
  100. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/predicate_block.rb +0 -0
  101. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/repetition.rb +0 -0
  102. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/sequence.rb +0 -0
  103. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/terminal.rb +0 -0
  104. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/transient_prefix.rb +0 -0
  105. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/node_classes/treetop_file.rb +0 -0
  106. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/compiler/ruby_builder.rb +0 -0
  107. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/polyglot.rb +0 -0
  108. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/ruby_extensions.rb +0 -0
  109. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/ruby_extensions/string.rb +0 -0
  110. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime.rb +0 -0
  111. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/compiled_parser.rb +0 -0
  112. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/interval_skip_list.rb +0 -0
  113. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/interval_skip_list/head_node.rb +0 -0
  114. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +0 -0
  115. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/interval_skip_list/node.rb +0 -0
  116. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/syntax_node.rb +0 -0
  117. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/terminal_parse_failure.rb +0 -0
  118. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/runtime/terminal_syntax_node.rb +0 -0
  119. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/lib/treetop/version.rb +0 -0
  120. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/script/generate_metagrammar.rb +0 -0
  121. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/script/svnadd +0 -0
  122. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/script/svnrm +0 -0
  123. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/and_predicate_spec.rb +0 -0
  124. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/anything_symbol_spec.rb +0 -0
  125. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/character_class_spec.rb +0 -0
  126. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/choice_spec.rb +0 -0
  127. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/circular_compilation_spec.rb +0 -0
  128. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/failure_propagation_functional_spec.rb +0 -0
  129. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/grammar_compiler_spec.rb +0 -0
  130. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/grammar_spec.rb +0 -0
  131. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/multibyte_chars_spec.rb +0 -0
  132. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/nonterminal_symbol_spec.rb +0 -0
  133. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/not_predicate_spec.rb +0 -0
  134. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/one_or_more_spec.rb +0 -0
  135. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/optional_spec.rb +0 -0
  136. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/parenthesized_expression_spec.rb +0 -0
  137. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/parsing_rule_spec.rb +0 -0
  138. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/repeated_subrule_spec.rb +0 -0
  139. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/semantic_predicate_spec.rb +0 -0
  140. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/sequence_spec.rb +0 -0
  141. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/terminal_spec.rb +0 -0
  142. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/terminal_symbol_spec.rb +0 -0
  143. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/test_grammar.treetop +0 -0
  144. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/test_grammar.tt +0 -0
  145. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/test_grammar_do.treetop +0 -0
  146. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/tt_compiler_spec.rb +0 -0
  147. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/compiler/zero_or_more_spec.rb +0 -0
  148. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/a.treetop +0 -0
  149. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/b.treetop +0 -0
  150. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/c.treetop +0 -0
  151. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/d.treetop +0 -0
  152. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/f.treetop +0 -0
  153. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/grammar_composition_spec.rb +0 -0
  154. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/composition/subfolder/e_includes_c.treetop +0 -0
  155. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/ruby_extensions/string_spec.rb +0 -0
  156. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/compiled_parser_spec.rb +0 -0
  157. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/delete_spec.rb +0 -0
  158. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/expire_range_spec.rb +0 -0
  159. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/insert_and_delete_node.rb +0 -0
  160. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/insert_spec.rb +0 -0
  161. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +0 -0
  162. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +0 -0
  163. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/palindromic_fixture.rb +0 -0
  164. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +0 -0
  165. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/interval_skip_list/spec_helper.rb +0 -0
  166. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/runtime/syntax_node_spec.rb +0 -0
  167. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/spec/spec_helper.rb +0 -0
  168. data/lib/mail/vendor/{treetop-1.4.3 → treetop-1.4.4}/treetop.gemspec +0 -0
  169. data/lib/mail/vendor/treetop.rb +1 -3
  170. data/lib/mail/version.rb +2 -1
  171. data/lib/tasks/corpus.rake +3 -3
  172. metadata +131 -128
  173. data/lib/mail/vendor/treetop-1.4.3/Or +0 -0
@@ -1,3 +1,10 @@
1
+ == Sun Mar 28 07:01:07 UTC 2010 Mikel Lindsaar <raasdnil@gmail.com>
2
+
3
+ * Version bump to 2.1.5
4
+ * Changed guess encoding to short circuit to binary if the mime type is unknown, should be safe
5
+ * Renaming spec to match the file for attachment_lists.rb
6
+ * Adding Message#decoded returns Message#body#decoded if the message is not multipart
7
+
1
8
  == Sun Mar 28 02:55:42 UTC 2010 Mikel Lindsaar <raasdnil@gmail.com>
2
9
 
3
10
  * Version bump to 2.1.4
data/Rakefile CHANGED
@@ -1,7 +1,4 @@
1
- environment = File.expand_path('../../vendor/gems/environment')
2
- if File.exist?("#{environment}.rb")
3
- require environment
4
- end
1
+ require File.expand_path('../spec/environment', __FILE__)
5
2
 
6
3
  require 'rake/rdoctask'
7
4
  require 'rake/gempackagetask'
@@ -11,7 +8,7 @@ require 'cucumber/rake/task'
11
8
 
12
9
  spec = Gem::Specification.new do |s|
13
10
  s.name = "mail"
14
- s.version = "2.1.5"
11
+ s.version = "2.1.5.1"
15
12
  s.author = "Mike Lindsaar"
16
13
  s.email = "raasdnil@gmail.com"
17
14
  s.homepage = "http://github.com/mikel/mail"
@@ -30,7 +27,7 @@ spec = Gem::Specification.new do |s|
30
27
  end
31
28
 
32
29
  Rake::GemPackageTask.new(spec) do |pkg|
33
- pkg.gem_spec = spec
30
+ pkg.gem_spec = spec
34
31
  end
35
32
 
36
33
  task :default => :spec
@@ -46,7 +43,7 @@ end
46
43
 
47
44
  Spec::Rake::SpecTask.new(:spec) do |t|
48
45
  t.warning = true
49
- t.spec_files = FileList['spec/**/*_spec.rb']
46
+ t.spec_files = FileList["#{File.dirname(__FILE__)}/spec/**/*_spec.rb"]
50
47
  t.spec_opts = %w(--backtrace --diff --color)
51
48
  t.libs << "#{File.dirname(__FILE__)}/spec"
52
49
  t.libs << "#{File.dirname(__FILE__)}/spec/mail"
@@ -4,13 +4,8 @@ module Mail # :doc:
4
4
  require 'date'
5
5
 
6
6
  require 'active_support'
7
-
8
- # Have to handle ActiveSupport 2.3 and 3.0
9
- # Following two lines make sure that HashWithIndifferentAccess is available
10
- # regardless of having activesupport 3 or 2.3 loaded
11
7
  require 'active_support/core_ext/hash/indifferent_access'
12
-
13
- require 'mail/vendor/treetop'
8
+ require 'active_support/core_ext/object/blank'
14
9
 
15
10
  require 'uri'
16
11
  require 'net/smtp'
@@ -25,33 +20,24 @@ module Mail # :doc:
25
20
  end
26
21
 
27
22
  if RUBY_VERSION >= "1.9.1"
28
- require 'mail/version_specific/ruby_1_9.rb'
23
+ require 'mail/version_specific/ruby_1_9'
29
24
  RubyVer = Mail::Ruby19
30
25
  else
31
- require 'mail/version_specific/ruby_1_8.rb'
26
+ require 'mail/version_specific/ruby_1_8'
32
27
  RubyVer = Mail::Ruby18
33
28
  end
34
29
 
35
30
  require 'mail/version'
36
31
 
37
- begin
38
- require 'active_support/core_ext/object/blank'
39
- rescue LoadError
40
- # Unneeded for Active Support <= 3.0.pre
41
- end
42
-
43
32
  require 'mail/core_extensions/nil'
44
33
  require 'mail/core_extensions/string'
45
34
 
46
35
  require 'mail/patterns'
47
36
  require 'mail/utilities'
48
37
  require 'mail/configuration'
49
- require 'mail/network/delivery_methods/smtp'
50
- require 'mail/network/delivery_methods/file_delivery'
51
- require 'mail/network/delivery_methods/sendmail'
52
- require 'mail/network/delivery_methods/test_mailer'
53
- require 'mail/network/retriever_methods/pop3'
54
- require 'mail/network/retriever_methods/imap'
38
+
39
+ # Autoload mail send and receive classes.
40
+ require 'mail/network'
55
41
 
56
42
  require 'mail/message'
57
43
  require 'mail/part'
@@ -62,55 +48,32 @@ module Mail # :doc:
62
48
  require 'mail/field'
63
49
  require 'mail/field_list'
64
50
 
65
- # Load in all common header fields modules
66
- require 'mail/fields/common/address_container'
67
- require 'mail/fields/common/common_address'
68
- require 'mail/fields/common/common_date'
69
- require 'mail/fields/common/common_field'
70
- require 'mail/fields/common/common_message_id'
71
- require 'mail/fields/common/parameter_hash'
72
-
73
- require 'mail/fields/structured_field'
74
- require 'mail/fields/unstructured_field'
75
51
  require 'mail/envelope'
76
52
 
53
+ require 'mail/vendor/treetop'
77
54
  parsers = %w[ rfc2822_obsolete rfc2822 address_lists phrase_lists
78
55
  date_time received message_ids envelope_from rfc2045
79
56
  mime_version content_type content_disposition
80
57
  content_transfer_encoding content_location ]
81
-
82
58
  parsers.each do |parser|
83
59
  begin
84
60
  # Try requiring the pre-compiled ruby version first
61
+ require 'treetop/runtime'
85
62
  require "mail/parsers/#{parser}"
86
63
  rescue LoadError
87
64
  # Otherwise, get treetop to compile and load it
65
+ require 'treetop/runtime'
66
+ require 'treetop/compiler'
88
67
  Treetop.load("mail/parsers/#{parser}")
89
68
  end
90
69
  end
91
70
 
92
- # Load in all header field elements
93
- elems = Dir.glob(File.join(File.dirname(__FILE__), 'mail', 'elements', '*.rb'))
94
- elems.each do |elem|
95
- require "mail/elements/#{File.basename(elem, '.rb')}"
96
- end
97
-
98
- # Load in all header fields
99
- fields = Dir.glob(File.join(File.dirname(__FILE__), 'mail', 'fields', '*.rb'))
100
- fields.each do |field|
101
- require "mail/fields/#{File.basename(field, '.rb')}"
102
- end
103
-
104
- # Load in all transfer encodings
105
- require "mail/encodings/encodings"
106
- require "mail/encodings/transfer_encoding"
107
- require "mail/encodings/binary"
108
- require "mail/encodings/8bit"
109
- require "mail/encodings/7bit"
110
- require "mail/encodings/base64"
111
- require "mail/encodings/quoted_printable"
112
-
113
- # Finally... require all the Mail.methods
114
- require File.join('mail', 'mail')
71
+ # Autoload header field elements and transfer encodings.
72
+ require 'mail/elements'
73
+ require 'mail/encodings'
74
+ require 'mail/encodings/base64'
75
+ require 'mail/encodings/quoted_printable'
115
76
 
77
+ # Finally... require all the Mail.methods
78
+ require 'mail/mail'
116
79
  end
@@ -0,0 +1,15 @@
1
+ module Mail
2
+ autoload :Address, 'mail/elements/address'
3
+ autoload :AddressList, 'mail/elements/address_list'
4
+ autoload :ContentDispositionElement, 'mail/elements/content_disposition_element'
5
+ autoload :ContentLocationElement, 'mail/elements/content_location_element'
6
+ autoload :ContentTransferEncodingElement, 'mail/elements/content_transfer_encoding_element'
7
+ autoload :ContentTypeElement, 'mail/elements/content_type_element'
8
+ autoload :DateTimeElement, 'mail/elements/date_time_element'
9
+ autoload :EnvelopeFromElement, 'mail/elements/envelope_from_element'
10
+ autoload :MessageIdsElement, 'mail/elements/message_ids_element'
11
+ autoload :MimeVersionElement, 'mail/elements/mime_version_element'
12
+ autoload :PhraseList, 'mail/elements/phrase_list'
13
+ autoload :ReceivedElement, 'mail/elements/received_element'
14
+ autoload :ReceivedElement, 'mail/elements/received_element'
15
+ end
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+
2
3
  module Mail
3
4
  # Raised when attempting to decode an unknown encoding type
4
5
  class UnknownEncodingType < StandardError #:nodoc:
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ require 'mail/encodings/8bit'
3
+
2
4
  module Mail
3
5
  module Encodings
4
6
  class SevenBit < EightBit
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ require 'mail/encodings/binary'
3
+
2
4
  module Mail
3
5
  module Encodings
4
6
  class EightBit < Binary
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ require 'mail/encodings/7bit'
3
+
2
4
  module Mail
3
5
  module Encodings
4
6
  class Base64 < SevenBit
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ require 'mail/encodings/transfer_encoding'
3
+
2
4
  module Mail
3
5
  module Encodings
4
6
  class Binary < TransferEncoding
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ require 'mail/encodings/7bit'
3
+
2
4
  module Mail
3
5
  module Encodings
4
6
  class QuotedPrintable < SevenBit
@@ -1,3 +1,5 @@
1
+ require 'mail/fields'
2
+
1
3
  # encoding: utf-8
2
4
  module Mail
3
5
  # Provides a single class to call to create a new structured or unstructured
@@ -0,0 +1,35 @@
1
+ module Mail
2
+ autoload :UnstructuredField, 'mail/fields/unstructured_field'
3
+ autoload :StructuredField, 'mail/fields/structured_field'
4
+ autoload :OptionalField, 'mail/fields/optional_field'
5
+
6
+ autoload :BccField, 'mail/fields/bcc_field'
7
+ autoload :CcField, 'mail/fields/cc_field'
8
+ autoload :CommentsField, 'mail/fields/comments_field'
9
+ autoload :ContentDescriptionField, 'mail/fields/content_description_field'
10
+ autoload :ContentDispositionField, 'mail/fields/content_disposition_field'
11
+ autoload :ContentIdField, 'mail/fields/content_id_field'
12
+ autoload :ContentLocationField, 'mail/fields/content_location_field'
13
+ autoload :ContentTransferEncodingField, 'mail/fields/content_transfer_encoding_field'
14
+ autoload :ContentTypeField, 'mail/fields/content_type_field'
15
+ autoload :DateField, 'mail/fields/date_field'
16
+ autoload :FromField, 'mail/fields/from_field'
17
+ autoload :InReplyToField, 'mail/fields/in_reply_to_field'
18
+ autoload :KeywordsField, 'mail/fields/keywords_field'
19
+ autoload :MessageIdField, 'mail/fields/message_id_field'
20
+ autoload :MimeVersionField, 'mail/fields/mime_version_field'
21
+ autoload :ReceivedField, 'mail/fields/received_field'
22
+ autoload :ReferencesField, 'mail/fields/references_field'
23
+ autoload :ReplyToField, 'mail/fields/reply_to_field'
24
+ autoload :ResentBccField, 'mail/fields/resent_bcc_field'
25
+ autoload :ResentCcField, 'mail/fields/resent_cc_field'
26
+ autoload :ResentDateField, 'mail/fields/resent_date_field'
27
+ autoload :ResentFromField, 'mail/fields/resent_from_field'
28
+ autoload :ResentMessageIdField, 'mail/fields/resent_message_id_field'
29
+ autoload :ResentSenderField, 'mail/fields/resent_sender_field'
30
+ autoload :ResentToField, 'mail/fields/resent_to_field'
31
+ autoload :ReturnPathField, 'mail/fields/return_path_field'
32
+ autoload :SenderField, 'mail/fields/sender_field'
33
+ autoload :SubjectField, 'mail/fields/subject_field'
34
+ autoload :ToField, 'mail/fields/to_field'
35
+ end
@@ -26,6 +26,8 @@
26
26
  # mail[:bcc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
27
27
  # mail[:bcc].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
28
28
  #
29
+ require 'mail/fields/common/common_address'
30
+
29
31
  module Mail
30
32
  class BccField < StructuredField
31
33
 
@@ -26,6 +26,8 @@
26
26
  # mail[:cc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
27
27
  # mail[:cc].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
28
28
  #
29
+ require 'mail/fields/common/common_address'
30
+
29
31
  module Mail
30
32
  class CcField < StructuredField
31
33
 
@@ -1,128 +1,116 @@
1
1
  # encoding: utf-8
2
+ require 'mail/fields/common/address_container'
3
+
2
4
  module Mail
3
5
  module CommonAddress # :nodoc:
4
-
5
- module ClassMethods # :nodoc:
6
-
7
- end
8
-
9
- module InstanceMethods # :doc:
10
-
11
- def parse(val = value)
12
- unless val.blank?
13
- @tree = AddressList.new(val)
14
- else
15
- nil
16
- end
17
- end
18
-
19
- # Allows you to iterate through each address object in the syntax tree
20
- def each
21
- tree.addresses.each do |address|
22
- yield(address)
23
- end
6
+ def parse(val = value)
7
+ unless val.blank?
8
+ @tree = AddressList.new(val)
9
+ else
10
+ nil
24
11
  end
25
-
26
- # Returns the address string of all the addresses in the address list
27
- def addresses
28
- list = tree.addresses.map { |a| a.address }
29
- Mail::AddressContainer.new(self, list)
12
+ end
13
+
14
+ # Allows you to iterate through each address object in the syntax tree
15
+ def each
16
+ tree.addresses.each do |address|
17
+ yield(address)
30
18
  end
19
+ end
31
20
 
32
- # Returns the formatted string of all the addresses in the address list
33
- def formatted
34
- list = tree.addresses.map { |a| a.format }
35
- Mail::AddressContainer.new(self, list)
36
- end
37
-
38
- # Returns the display name of all the addresses in the address list
39
- def display_names
40
- list = tree.addresses.map { |a| a.display_name }
41
- Mail::AddressContainer.new(self, list)
42
- end
43
-
44
- # Returns the actual address objects in the address list
45
- def addrs
46
- list = tree.addresses
47
- Mail::AddressContainer.new(self, list)
48
- end
49
-
50
- # Returns a hash of group name => address strings for the address list
51
- def groups
52
- @groups = Hash.new
53
- tree.group_recipients.each do |group|
54
- @groups[group.group_name.text_value] = get_group_addresses(group.group_list)
55
- end
56
- @groups
57
- end
58
-
59
- # Returns the addresses that are part of groups
60
- def group_addresses
61
- groups.map { |k,v| v.map { |a| a.format } }.flatten
62
- end
21
+ # Returns the address string of all the addresses in the address list
22
+ def addresses
23
+ list = tree.addresses.map { |a| a.address }
24
+ Mail::AddressContainer.new(self, list)
25
+ end
63
26
 
64
- # Returns the name of all the groups in a string
65
- def group_names # :nodoc:
66
- tree.group_names
67
- end
68
-
69
- def default
70
- addresses
27
+ # Returns the formatted string of all the addresses in the address list
28
+ def formatted
29
+ list = tree.addresses.map { |a| a.format }
30
+ Mail::AddressContainer.new(self, list)
31
+ end
32
+
33
+ # Returns the display name of all the addresses in the address list
34
+ def display_names
35
+ list = tree.addresses.map { |a| a.display_name }
36
+ Mail::AddressContainer.new(self, list)
37
+ end
38
+
39
+ # Returns the actual address objects in the address list
40
+ def addrs
41
+ list = tree.addresses
42
+ Mail::AddressContainer.new(self, list)
43
+ end
44
+
45
+ # Returns a hash of group name => address strings for the address list
46
+ def groups
47
+ @groups = Hash.new
48
+ tree.group_recipients.each do |group|
49
+ @groups[group.group_name.text_value] = get_group_addresses(group.group_list)
71
50
  end
51
+ @groups
52
+ end
53
+
54
+ # Returns the addresses that are part of groups
55
+ def group_addresses
56
+ groups.map { |k,v| v.map { |a| a.format } }.flatten
57
+ end
72
58
 
73
- def <<(val)
74
- case
75
- when val.nil?
76
- raise ArgumentError, "Need to pass an address to <<"
77
- when val.blank?
78
- parse(encoded)
79
- else
80
- parse((formatted + [val]).join(", "))
81
- end
82
- end
83
-
84
- private
85
-
86
- def do_encode(field_name)
87
- return '' if value.blank?
88
- address_array = tree.addresses.reject { |a| group_addresses.include?(a.encoded) }.compact.map { |a| a.encoded }
89
- address_text = address_array.join(", \r\n\t")
90
- group_array = groups.map { |k,v| "#{k}: #{v.map { |a| a.encoded }.join(", \r\n\t")};" }
91
- group_text = group_array.join(" \r\n\t")
92
- return_array = [address_text, group_text].reject { |a| a.blank? }
93
- "#{field_name}: #{return_array.join(", \r\n\t")}\r\n"
94
- end
59
+ # Returns the name of all the groups in a string
60
+ def group_names # :nodoc:
61
+ tree.group_names
62
+ end
63
+
64
+ def default
65
+ addresses
66
+ end
95
67
 
96
- def do_decode
97
- return nil if value.blank?
98
- address_array = tree.addresses.reject { |a| group_addresses.include?(a.decoded) }.map { |a| a.decoded }
99
- address_text = address_array.join(", ")
100
- group_array = groups.map { |k,v| "#{k}: #{v.map { |a| a.decoded }.join(", ")};" }
101
- group_text = group_array.join(" ")
102
- return_array = [address_text, group_text].reject { |a| a.blank? }
103
- return_array.join(", ")
68
+ def <<(val)
69
+ case
70
+ when val.nil?
71
+ raise ArgumentError, "Need to pass an address to <<"
72
+ when val.blank?
73
+ parse(encoded)
74
+ else
75
+ parse((formatted + [val]).join(", "))
104
76
  end
77
+ end
78
+
79
+ private
80
+
81
+ def do_encode(field_name)
82
+ return '' if value.blank?
83
+ address_array = tree.addresses.reject { |a| group_addresses.include?(a.encoded) }.compact.map { |a| a.encoded }
84
+ address_text = address_array.join(", \r\n\t")
85
+ group_array = groups.map { |k,v| "#{k}: #{v.map { |a| a.encoded }.join(", \r\n\t")};" }
86
+ group_text = group_array.join(" \r\n\t")
87
+ return_array = [address_text, group_text].reject { |a| a.blank? }
88
+ "#{field_name}: #{return_array.join(", \r\n\t")}\r\n"
89
+ end
105
90
 
106
- # Returns the syntax tree of the Addresses
107
- def tree # :nodoc:
108
- @tree ||= AddressList.new(value)
109
- end
110
-
111
- def get_group_addresses(group_list)
112
- if group_list.respond_to?(:addresses)
113
- group_list.addresses.map do |address_tree|
114
- Mail::Address.new(address_tree)
115
- end
116
- else
117
- []
118
- end
119
- end
91
+ def do_decode
92
+ return nil if value.blank?
93
+ address_array = tree.addresses.reject { |a| group_addresses.include?(a.decoded) }.map { |a| a.decoded }
94
+ address_text = address_array.join(", ")
95
+ group_array = groups.map { |k,v| "#{k}: #{v.map { |a| a.decoded }.join(", ")};" }
96
+ group_text = group_array.join(" ")
97
+ return_array = [address_text, group_text].reject { |a| a.blank? }
98
+ return_array.join(", ")
99
+ end
120
100
 
101
+ # Returns the syntax tree of the Addresses
102
+ def tree # :nodoc:
103
+ @tree ||= AddressList.new(value)
121
104
  end
122
105
 
123
- def self.included(receiver) # :nodoc:
124
- receiver.send :include, InstanceMethods
106
+ def get_group_addresses(group_list)
107
+ if group_list.respond_to?(:addresses)
108
+ group_list.addresses.map do |address_tree|
109
+ Mail::Address.new(address_tree)
110
+ end
111
+ else
112
+ []
113
+ end
125
114
  end
126
-
127
115
  end
128
- end
116
+ end