mail 2.7.1.rc1 → 2.8.1

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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +59 -28
  3. data/lib/mail/attachments_list.rb +2 -5
  4. data/lib/mail/body.rb +31 -48
  5. data/lib/mail/check_delivery_params.rb +21 -16
  6. data/lib/mail/constants.rb +27 -5
  7. data/lib/mail/elements/address.rb +27 -27
  8. data/lib/mail/elements/address_list.rb +1 -1
  9. data/lib/mail/elements/content_disposition_element.rb +1 -1
  10. data/lib/mail/elements/content_location_element.rb +1 -1
  11. data/lib/mail/elements/content_transfer_encoding_element.rb +1 -1
  12. data/lib/mail/elements/content_type_element.rb +8 -4
  13. data/lib/mail/elements/date_time_element.rb +1 -1
  14. data/lib/mail/elements/envelope_from_element.rb +13 -7
  15. data/lib/mail/elements/message_ids_element.rb +14 -5
  16. data/lib/mail/elements/mime_version_element.rb +1 -1
  17. data/lib/mail/elements/phrase_list.rb +7 -2
  18. data/lib/mail/elements/received_element.rb +20 -6
  19. data/lib/mail/encodings/7bit.rb +5 -0
  20. data/lib/mail/encodings/base64.rb +2 -2
  21. data/lib/mail/encodings/quoted_printable.rb +2 -2
  22. data/lib/mail/encodings/unix_to_unix.rb +1 -0
  23. data/lib/mail/encodings.rb +30 -59
  24. data/lib/mail/envelope.rb +11 -14
  25. data/lib/mail/field.rb +37 -53
  26. data/lib/mail/field_list.rb +60 -7
  27. data/lib/mail/fields/bcc_field.rb +34 -52
  28. data/lib/mail/fields/cc_field.rb +28 -49
  29. data/lib/mail/fields/comments_field.rb +27 -37
  30. data/lib/mail/fields/common_address_field.rb +170 -0
  31. data/lib/mail/fields/common_date_field.rb +58 -0
  32. data/lib/mail/fields/common_field.rb +77 -0
  33. data/lib/mail/fields/common_message_id_field.rb +42 -0
  34. data/lib/mail/fields/content_description_field.rb +7 -14
  35. data/lib/mail/fields/content_disposition_field.rb +13 -38
  36. data/lib/mail/fields/content_id_field.rb +24 -51
  37. data/lib/mail/fields/content_location_field.rb +11 -25
  38. data/lib/mail/fields/content_transfer_encoding_field.rb +31 -31
  39. data/lib/mail/fields/content_type_field.rb +46 -71
  40. data/lib/mail/fields/date_field.rb +23 -51
  41. data/lib/mail/fields/from_field.rb +28 -49
  42. data/lib/mail/fields/in_reply_to_field.rb +38 -49
  43. data/lib/mail/fields/keywords_field.rb +18 -31
  44. data/lib/mail/fields/message_id_field.rb +25 -71
  45. data/lib/mail/fields/mime_version_field.rb +19 -30
  46. data/lib/mail/fields/named_structured_field.rb +11 -0
  47. data/lib/mail/fields/named_unstructured_field.rb +11 -0
  48. data/lib/mail/fields/optional_field.rb +5 -6
  49. data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +12 -10
  50. data/lib/mail/fields/received_field.rb +43 -57
  51. data/lib/mail/fields/references_field.rb +35 -49
  52. data/lib/mail/fields/reply_to_field.rb +28 -49
  53. data/lib/mail/fields/resent_bcc_field.rb +28 -49
  54. data/lib/mail/fields/resent_cc_field.rb +28 -49
  55. data/lib/mail/fields/resent_date_field.rb +5 -29
  56. data/lib/mail/fields/resent_from_field.rb +28 -49
  57. data/lib/mail/fields/resent_message_id_field.rb +5 -29
  58. data/lib/mail/fields/resent_sender_field.rb +27 -56
  59. data/lib/mail/fields/resent_to_field.rb +28 -49
  60. data/lib/mail/fields/return_path_field.rb +50 -54
  61. data/lib/mail/fields/sender_field.rb +34 -55
  62. data/lib/mail/fields/structured_field.rb +3 -30
  63. data/lib/mail/fields/subject_field.rb +9 -11
  64. data/lib/mail/fields/to_field.rb +28 -49
  65. data/lib/mail/fields/unstructured_field.rb +16 -48
  66. data/lib/mail/header.rb +69 -110
  67. data/lib/mail/matchers/attachment_matchers.rb +15 -0
  68. data/lib/mail/message.rb +52 -66
  69. data/lib/mail/multibyte/chars.rb +8 -166
  70. data/lib/mail/multibyte/unicode.rb +10 -10
  71. data/lib/mail/multibyte/utils.rb +26 -43
  72. data/lib/mail/multibyte.rb +1 -11
  73. data/lib/mail/network/delivery_methods/exim.rb +5 -4
  74. data/lib/mail/network/delivery_methods/file_delivery.rb +11 -10
  75. data/lib/mail/network/delivery_methods/logger_delivery.rb +2 -5
  76. data/lib/mail/network/delivery_methods/sendmail.rb +56 -18
  77. data/lib/mail/network/delivery_methods/smtp.rb +25 -9
  78. data/lib/mail/network/delivery_methods/smtp_connection.rb +3 -12
  79. data/lib/mail/network/delivery_methods/test_mailer.rb +4 -2
  80. data/lib/mail/network/retriever_methods/base.rb +8 -8
  81. data/lib/mail/network/retriever_methods/imap.rb +3 -3
  82. data/lib/mail/network/retriever_methods/pop3.rb +2 -2
  83. data/lib/mail/network/retriever_methods/test_retriever.rb +2 -1
  84. data/lib/mail/parsers/address_lists_parser.rb +33175 -33140
  85. data/lib/mail/parsers/address_lists_parser.rl +7 -0
  86. data/lib/mail/parsers/content_disposition_parser.rb +889 -889
  87. data/lib/mail/parsers/content_disposition_parser.rl +7 -0
  88. data/lib/mail/parsers/content_location_parser.rb +796 -787
  89. data/lib/mail/parsers/content_location_parser.rl +7 -0
  90. data/lib/mail/parsers/content_transfer_encoding_parser.rb +496 -496
  91. data/lib/mail/parsers/content_transfer_encoding_parser.rl +7 -0
  92. data/lib/mail/parsers/content_type_parser.rb +1008 -1005
  93. data/lib/mail/parsers/content_type_parser.rl +7 -0
  94. data/lib/mail/parsers/date_time_parser.rb +864 -859
  95. data/lib/mail/parsers/date_time_parser.rl +7 -0
  96. data/lib/mail/parsers/envelope_from_parser.rb +3649 -3548
  97. data/lib/mail/parsers/envelope_from_parser.rl +7 -0
  98. data/lib/mail/parsers/message_ids_parser.rb +5135 -2832
  99. data/lib/mail/parsers/message_ids_parser.rl +12 -1
  100. data/lib/mail/parsers/mime_version_parser.rb +487 -483
  101. data/lib/mail/parsers/mime_version_parser.rl +7 -0
  102. data/lib/mail/parsers/phrase_lists_parser.rb +858 -865
  103. data/lib/mail/parsers/phrase_lists_parser.rl +8 -1
  104. data/lib/mail/parsers/received_parser.rb +8756 -8728
  105. data/lib/mail/parsers/received_parser.rl +7 -0
  106. data/lib/mail/parsers/rfc5322.rl +28 -13
  107. data/lib/mail/parsers.rb +11 -17
  108. data/lib/mail/part.rb +5 -9
  109. data/lib/mail/parts_list.rb +57 -0
  110. data/lib/mail/smtp_envelope.rb +57 -0
  111. data/lib/mail/utilities.rb +307 -69
  112. data/lib/mail/version.rb +2 -2
  113. data/lib/mail/yaml.rb +30 -0
  114. data/lib/mail.rb +3 -20
  115. metadata +88 -20
  116. data/lib/mail/core_extensions/smtp.rb +0 -28
  117. data/lib/mail/core_extensions/string.rb +0 -17
  118. data/lib/mail/fields/common/address_container.rb +0 -17
  119. data/lib/mail/fields/common/common_address.rb +0 -161
  120. data/lib/mail/fields/common/common_date.rb +0 -36
  121. data/lib/mail/fields/common/common_field.rb +0 -52
  122. data/lib/mail/fields/common/common_message_id.rb +0 -49
  123. data/lib/mail/version_specific/ruby_1_8.rb +0 -163
  124. data/lib/mail/version_specific/ruby_1_9.rb +0 -278
@@ -11,8 +11,8 @@ module Mail
11
11
  # count: number of emails to retrieve. The default value is 1.
12
12
  # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc.
13
13
  #
14
- def first(options = {}, &block)
15
- options ||= {}
14
+ def first(options = nil, &block)
15
+ options = options ? Hash[options] : {}
16
16
  options[:what] = :first
17
17
  options[:count] ||= 1
18
18
  find(options, &block)
@@ -24,8 +24,8 @@ module Mail
24
24
  # count: number of emails to retrieve. The default value is 1.
25
25
  # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc.
26
26
  #
27
- def last(options = {}, &block)
28
- options ||= {}
27
+ def last(options = nil, &block)
28
+ options = options ? Hash[options] : {}
29
29
  options[:what] = :last
30
30
  options[:count] ||= 1
31
31
  find(options, &block)
@@ -36,8 +36,8 @@ module Mail
36
36
  # Possible options:
37
37
  # order: order of emails returned. Possible values are :asc or :desc. Default value is :asc.
38
38
  #
39
- def all(options = {}, &block)
40
- options ||= {}
39
+ def all(options = nil, &block)
40
+ options = options ? Hash[options] : {}
41
41
  options[:count] = :all
42
42
  find(options, &block)
43
43
  end
@@ -53,8 +53,8 @@ module Mail
53
53
  # delete_after_find: flag for whether to delete each retreived email after find. Default
54
54
  # is true. Call #find if you would like this to default to false.
55
55
  #
56
- def find_and_delete(options = {}, &block)
57
- options ||= {}
56
+ def find_and_delete(options = nil, &block)
57
+ options = options ? Hash[options] : {}
58
58
  options[:delete_after_find] ||= true
59
59
  find(options, &block)
60
60
  end
@@ -70,7 +70,7 @@ module Mail
70
70
  # The default is 'ALL'
71
71
  # search_charset: charset to pass to IMAP server search. Omitted by default. Example: 'UTF-8' or 'ASCII'.
72
72
  #
73
- def find(options={}, &block)
73
+ def find(options=nil, &block)
74
74
  options = validate_options(options)
75
75
 
76
76
  start do |imap|
@@ -121,7 +121,7 @@ module Mail
121
121
  mailbox = Net::IMAP.encode_utf7(mailbox)
122
122
 
123
123
  start do |imap|
124
- imap.examine(mailbox)
124
+ imap.select(mailbox)
125
125
  imap.uid_search(['ALL']).each do |uid|
126
126
  imap.uid_store(uid, "+FLAGS", [Net::IMAP::DELETED])
127
127
  end
@@ -142,7 +142,7 @@ module Mail
142
142
 
143
143
  # Set default options
144
144
  def validate_options(options)
145
- options ||= {}
145
+ options = options ? Hash[options] : {}
146
146
  options[:mailbox] ||= 'INBOX'
147
147
  options[:count] ||= 10
148
148
  options[:order] ||= :asc
@@ -57,7 +57,7 @@ module Mail
57
57
  # delete_after_find: flag for whether to delete each retreived email after find. Default
58
58
  # is false. Use #find_and_delete if you would like this to default to true.
59
59
  #
60
- def find(options = {}, &block)
60
+ def find(options = nil, &block)
61
61
  options = validate_options(options)
62
62
 
63
63
  start do |pop3|
@@ -113,7 +113,7 @@ module Mail
113
113
 
114
114
  # Set default options
115
115
  def validate_options(options)
116
- options ||= {}
116
+ options = options ? Hash[options] : {}
117
117
  options[:count] ||= 10
118
118
  options[:order] ||= :asc
119
119
  options[:what] ||= :first
@@ -17,7 +17,8 @@ module Mail
17
17
  @@emails = []
18
18
  end
19
19
 
20
- def find(options = {}, &block)
20
+ def find(options = nil, &block)
21
+ options = options ? Hash[options] : {}
21
22
  options[:count] ||= :all
22
23
  options[:order] ||= :asc
23
24
  options[:what] ||= :first