mail 2.7.0 → 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 (125) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +59 -28
  3. data/lib/mail/attachments_list.rb +2 -5
  4. data/lib/mail/body.rb +33 -50
  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/transfer_encoding.rb +1 -1
  23. data/lib/mail/encodings/unix_to_unix.rb +1 -0
  24. data/lib/mail/encodings.rb +30 -59
  25. data/lib/mail/envelope.rb +11 -14
  26. data/lib/mail/field.rb +39 -53
  27. data/lib/mail/field_list.rb +60 -7
  28. data/lib/mail/fields/bcc_field.rb +34 -52
  29. data/lib/mail/fields/cc_field.rb +28 -49
  30. data/lib/mail/fields/comments_field.rb +27 -37
  31. data/lib/mail/fields/common_address_field.rb +170 -0
  32. data/lib/mail/fields/common_date_field.rb +58 -0
  33. data/lib/mail/fields/common_field.rb +77 -0
  34. data/lib/mail/fields/common_message_id_field.rb +42 -0
  35. data/lib/mail/fields/content_description_field.rb +7 -14
  36. data/lib/mail/fields/content_disposition_field.rb +13 -38
  37. data/lib/mail/fields/content_id_field.rb +24 -51
  38. data/lib/mail/fields/content_location_field.rb +11 -25
  39. data/lib/mail/fields/content_transfer_encoding_field.rb +31 -31
  40. data/lib/mail/fields/content_type_field.rb +47 -72
  41. data/lib/mail/fields/date_field.rb +23 -51
  42. data/lib/mail/fields/from_field.rb +28 -49
  43. data/lib/mail/fields/in_reply_to_field.rb +38 -49
  44. data/lib/mail/fields/keywords_field.rb +18 -31
  45. data/lib/mail/fields/message_id_field.rb +25 -71
  46. data/lib/mail/fields/mime_version_field.rb +19 -30
  47. data/lib/mail/fields/named_structured_field.rb +11 -0
  48. data/lib/mail/fields/named_unstructured_field.rb +11 -0
  49. data/lib/mail/fields/optional_field.rb +5 -6
  50. data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +12 -10
  51. data/lib/mail/fields/received_field.rb +43 -57
  52. data/lib/mail/fields/references_field.rb +35 -49
  53. data/lib/mail/fields/reply_to_field.rb +28 -49
  54. data/lib/mail/fields/resent_bcc_field.rb +28 -49
  55. data/lib/mail/fields/resent_cc_field.rb +28 -49
  56. data/lib/mail/fields/resent_date_field.rb +5 -29
  57. data/lib/mail/fields/resent_from_field.rb +28 -49
  58. data/lib/mail/fields/resent_message_id_field.rb +5 -29
  59. data/lib/mail/fields/resent_sender_field.rb +27 -56
  60. data/lib/mail/fields/resent_to_field.rb +28 -49
  61. data/lib/mail/fields/return_path_field.rb +50 -54
  62. data/lib/mail/fields/sender_field.rb +34 -55
  63. data/lib/mail/fields/structured_field.rb +3 -30
  64. data/lib/mail/fields/subject_field.rb +9 -11
  65. data/lib/mail/fields/to_field.rb +28 -49
  66. data/lib/mail/fields/unstructured_field.rb +16 -48
  67. data/lib/mail/header.rb +69 -110
  68. data/lib/mail/matchers/attachment_matchers.rb +15 -0
  69. data/lib/mail/message.rb +53 -68
  70. data/lib/mail/multibyte/chars.rb +8 -166
  71. data/lib/mail/multibyte/unicode.rb +10 -10
  72. data/lib/mail/multibyte/utils.rb +26 -43
  73. data/lib/mail/multibyte.rb +1 -11
  74. data/lib/mail/network/delivery_methods/exim.rb +5 -4
  75. data/lib/mail/network/delivery_methods/file_delivery.rb +11 -10
  76. data/lib/mail/network/delivery_methods/logger_delivery.rb +2 -5
  77. data/lib/mail/network/delivery_methods/sendmail.rb +56 -18
  78. data/lib/mail/network/delivery_methods/smtp.rb +25 -9
  79. data/lib/mail/network/delivery_methods/smtp_connection.rb +3 -12
  80. data/lib/mail/network/delivery_methods/test_mailer.rb +4 -2
  81. data/lib/mail/network/retriever_methods/base.rb +8 -8
  82. data/lib/mail/network/retriever_methods/imap.rb +3 -3
  83. data/lib/mail/network/retriever_methods/pop3.rb +2 -2
  84. data/lib/mail/network/retriever_methods/test_retriever.rb +2 -1
  85. data/lib/mail/parsers/address_lists_parser.rb +33175 -33140
  86. data/lib/mail/parsers/address_lists_parser.rl +7 -0
  87. data/lib/mail/parsers/content_disposition_parser.rb +889 -889
  88. data/lib/mail/parsers/content_disposition_parser.rl +7 -0
  89. data/lib/mail/parsers/content_location_parser.rb +796 -787
  90. data/lib/mail/parsers/content_location_parser.rl +7 -0
  91. data/lib/mail/parsers/content_transfer_encoding_parser.rb +496 -496
  92. data/lib/mail/parsers/content_transfer_encoding_parser.rl +7 -0
  93. data/lib/mail/parsers/content_type_parser.rb +1008 -1005
  94. data/lib/mail/parsers/content_type_parser.rl +7 -0
  95. data/lib/mail/parsers/date_time_parser.rb +864 -859
  96. data/lib/mail/parsers/date_time_parser.rl +7 -0
  97. data/lib/mail/parsers/envelope_from_parser.rb +3649 -3548
  98. data/lib/mail/parsers/envelope_from_parser.rl +7 -0
  99. data/lib/mail/parsers/message_ids_parser.rb +5135 -2832
  100. data/lib/mail/parsers/message_ids_parser.rl +12 -1
  101. data/lib/mail/parsers/mime_version_parser.rb +487 -483
  102. data/lib/mail/parsers/mime_version_parser.rl +7 -0
  103. data/lib/mail/parsers/phrase_lists_parser.rb +858 -865
  104. data/lib/mail/parsers/phrase_lists_parser.rl +8 -1
  105. data/lib/mail/parsers/received_parser.rb +8756 -8728
  106. data/lib/mail/parsers/received_parser.rl +7 -0
  107. data/lib/mail/parsers/rfc5322.rl +28 -13
  108. data/lib/mail/parsers.rb +11 -17
  109. data/lib/mail/part.rb +6 -10
  110. data/lib/mail/parts_list.rb +57 -0
  111. data/lib/mail/smtp_envelope.rb +57 -0
  112. data/lib/mail/utilities.rb +325 -87
  113. data/lib/mail/version.rb +2 -2
  114. data/lib/mail/yaml.rb +30 -0
  115. data/lib/mail.rb +3 -20
  116. metadata +86 -18
  117. data/lib/mail/core_extensions/smtp.rb +0 -28
  118. data/lib/mail/core_extensions/string.rb +0 -17
  119. data/lib/mail/fields/common/address_container.rb +0 -17
  120. data/lib/mail/fields/common/common_address.rb +0 -161
  121. data/lib/mail/fields/common/common_date.rb +0 -36
  122. data/lib/mail/fields/common/common_field.rb +0 -52
  123. data/lib/mail/fields/common/common_message_id.rb +0 -49
  124. data/lib/mail/version_specific/ruby_1_8.rb +0 -163
  125. 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