mail 2.6.4 → 2.7.0.rc1

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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.rdoc +35 -0
  3. data/Dependencies.txt +0 -1
  4. data/Gemfile +7 -7
  5. data/README.md +8 -5
  6. data/Rakefile +0 -6
  7. data/lib/mail/attachments_list.rb +4 -3
  8. data/lib/mail/body.rb +3 -3
  9. data/lib/mail/check_delivery_params.rb +47 -10
  10. data/lib/mail/core_extensions/smtp.rb +19 -16
  11. data/lib/mail/core_extensions/string.rb +0 -4
  12. data/lib/mail/elements/address.rb +18 -8
  13. data/lib/mail/elements/address_list.rb +10 -18
  14. data/lib/mail/elements/content_disposition_element.rb +8 -15
  15. data/lib/mail/elements/content_location_element.rb +5 -10
  16. data/lib/mail/elements/content_transfer_encoding_element.rb +5 -10
  17. data/lib/mail/elements/content_type_element.rb +8 -19
  18. data/lib/mail/elements/date_time_element.rb +6 -14
  19. data/lib/mail/elements/envelope_from_element.rb +14 -21
  20. data/lib/mail/elements/message_ids_element.rb +8 -12
  21. data/lib/mail/elements/mime_version_element.rb +6 -14
  22. data/lib/mail/elements/phrase_list.rb +6 -9
  23. data/lib/mail/elements/received_element.rb +9 -15
  24. data/lib/mail/encodings.rb +12 -14
  25. data/lib/mail/field.rb +7 -4
  26. data/lib/mail/fields/common/address_container.rb +2 -2
  27. data/lib/mail/fields/common/parameter_hash.rb +1 -1
  28. data/lib/mail/fields/content_type_field.rb +2 -7
  29. data/lib/mail/fields/unstructured_field.rb +2 -2
  30. data/lib/mail/header.rb +1 -0
  31. data/lib/mail/message.rb +23 -25
  32. data/lib/mail/multibyte/chars.rb +29 -29
  33. data/lib/mail/multibyte.rb +51 -0
  34. data/lib/mail/network/delivery_methods/file_delivery.rb +4 -8
  35. data/lib/mail/network/delivery_methods/sendmail.rb +2 -4
  36. data/lib/mail/network/delivery_methods/smtp.rb +16 -11
  37. data/lib/mail/network/delivery_methods/smtp_connection.rb +2 -6
  38. data/lib/mail/network/delivery_methods/test_mailer.rb +5 -8
  39. data/lib/mail/network/retriever_methods/test_retriever.rb +1 -1
  40. data/lib/mail/parsers/address_lists_parser.rb +15321 -112
  41. data/lib/mail/parsers/address_lists_parser.rl +166 -0
  42. data/lib/mail/parsers/content_disposition_parser.rb +698 -55
  43. data/lib/mail/parsers/content_disposition_parser.rl +76 -0
  44. data/lib/mail/parsers/content_location_parser.rb +565 -23
  45. data/lib/mail/parsers/content_location_parser.rl +65 -0
  46. data/lib/mail/parsers/content_transfer_encoding_parser.rb +410 -22
  47. data/lib/mail/parsers/content_transfer_encoding_parser.rl +58 -0
  48. data/lib/mail/parsers/content_type_parser.rb +841 -54
  49. data/lib/mail/parsers/content_type_parser.rl +77 -0
  50. data/lib/mail/parsers/date_time_parser.rb +773 -26
  51. data/lib/mail/parsers/date_time_parser.rl +56 -0
  52. data/lib/mail/parsers/envelope_from_parser.rb +2051 -36
  53. data/lib/mail/parsers/envelope_from_parser.rl +76 -0
  54. data/lib/mail/parsers/message_ids_parser.rb +1494 -25
  55. data/lib/mail/parsers/message_ids_parser.rl +76 -0
  56. data/lib/mail/parsers/mime_version_parser.rb +393 -26
  57. data/lib/mail/parsers/mime_version_parser.rl +55 -0
  58. data/lib/mail/parsers/phrase_lists_parser.rb +529 -19
  59. data/lib/mail/parsers/phrase_lists_parser.rl +77 -0
  60. data/lib/mail/parsers/received_parser.rb +4711 -38
  61. data/lib/mail/parsers/received_parser.rl +78 -0
  62. data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +12 -0
  63. data/lib/mail/parsers/rfc2045_content_type.rl +24 -0
  64. data/lib/mail/parsers/rfc2045_mime.rl +15 -0
  65. data/lib/mail/parsers/rfc2183_content_disposition.rl +14 -0
  66. data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +16 -0
  67. data/lib/mail/parsers/rfc5322.rl +57 -0
  68. data/lib/mail/parsers/rfc5322_address.rl +70 -0
  69. data/lib/mail/parsers/{ragel/date_time.rl → rfc5322_date_time.rl} +7 -1
  70. data/lib/mail/parsers/rfc5322_lexical_tokens.rl +56 -0
  71. data/lib/mail/parsers.rb +16 -24
  72. data/lib/mail/part.rb +1 -1
  73. data/lib/mail/parts_list.rb +5 -6
  74. data/lib/mail/utilities.rb +19 -3
  75. data/lib/mail/version.rb +3 -3
  76. data/lib/mail/version_specific/ruby_1_8.rb +28 -2
  77. data/lib/mail/version_specific/ruby_1_9.rb +51 -8
  78. data/lib/mail.rb +2 -10
  79. metadata +28 -45
  80. data/lib/mail/core_extensions/string/access.rb +0 -146
  81. data/lib/mail/core_extensions/string/multibyte.rb +0 -79
  82. data/lib/mail/parsers/ragel/common.rl +0 -185
  83. data/lib/mail/parsers/ragel/parser_info.rb +0 -61
  84. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb +0 -14864
  85. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl +0 -37
  86. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb +0 -751
  87. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl +0 -37
  88. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb +0 -614
  89. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl +0 -37
  90. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb +0 -447
  91. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl +0 -37
  92. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb +0 -825
  93. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl +0 -37
  94. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb +0 -817
  95. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl +0 -37
  96. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb +0 -2149
  97. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl +0 -37
  98. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb +0 -1570
  99. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl +0 -37
  100. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb +0 -440
  101. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl +0 -37
  102. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb +0 -564
  103. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl +0 -37
  104. data/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl +0 -51
  105. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb +0 -5144
  106. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl +0 -37
  107. data/lib/mail/parsers/ragel/ruby/parser.rb.rl.erb +0 -37
  108. data/lib/mail/parsers/ragel/ruby.rb +0 -40
  109. data/lib/mail/parsers/ragel.rb +0 -18
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+ require 'mail/utilities'
3
+
4
+ %%{
5
+ machine date_time;
6
+
7
+ # Date
8
+ action date_s { date_s = p }
9
+ action date_e { date_time.date_string = data[date_s..(p-1)] }
10
+
11
+ # Time
12
+ action time_s { time_s = p }
13
+ action time_e { date_time.time_string = data[time_s..(p-1)] }
14
+
15
+ # No-op actions
16
+ action comment_s {}
17
+ action comment_e {}
18
+ action phrase_s {}
19
+ action phrase_e {}
20
+ action qstr_s {}
21
+ action qstr_e {}
22
+
23
+ include rfc5322_date_time "rfc5322_date_time.rl";
24
+ main := date_time;
25
+ }%%
26
+
27
+ module Mail::Parsers
28
+ module DateTimeParser
29
+ DateTimeStruct = Struct.new(:date_string, :time_string, :error)
30
+
31
+ %%write data noprefix;
32
+
33
+ def self.parse(data)
34
+ raise Mail::Field::ParseError.new(Mail::DateTimeElement, data, "nil is an invalid DateTime") if data.nil?
35
+
36
+ date_time = DateTimeStruct.new([])
37
+
38
+ # Parser state
39
+ date_s = time_s = nil
40
+
41
+ # 5.1 Variables Used by Ragel
42
+ p = 0
43
+ eof = pe = data.length
44
+ stack = []
45
+
46
+ %%write init;
47
+ %%write exec;
48
+
49
+ if p != eof || cs < %%{ write first_final; }%%
50
+ raise Mail::Field::ParseError.new(Mail::DateTimeElement, data, "Only able to parse up to #{data[0..p]}")
51
+ end
52
+
53
+ date_time
54
+ end
55
+ end
56
+ end