mail 2.6.6 → 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.
- checksums.yaml +5 -5
- data/MIT-LICENSE +1 -1
- data/README.md +134 -119
- data/lib/mail/attachments_list.rb +10 -9
- data/lib/mail/body.rb +73 -84
- data/lib/mail/check_delivery_params.rb +28 -21
- data/lib/mail/configuration.rb +2 -0
- data/lib/mail/constants.rb +27 -5
- data/lib/mail/elements/address.rb +53 -47
- data/lib/mail/elements/address_list.rb +11 -19
- data/lib/mail/elements/content_disposition_element.rb +9 -16
- data/lib/mail/elements/content_location_element.rb +6 -11
- data/lib/mail/elements/content_transfer_encoding_element.rb +6 -11
- data/lib/mail/elements/content_type_element.rb +16 -23
- data/lib/mail/elements/date_time_element.rb +7 -15
- data/lib/mail/elements/envelope_from_element.rb +22 -23
- data/lib/mail/elements/message_ids_element.rb +18 -13
- data/lib/mail/elements/mime_version_element.rb +7 -15
- data/lib/mail/elements/phrase_list.rb +12 -10
- data/lib/mail/elements/received_element.rb +27 -19
- data/lib/mail/encodings/7bit.rb +9 -14
- data/lib/mail/encodings/8bit.rb +2 -21
- data/lib/mail/encodings/base64.rb +11 -12
- data/lib/mail/encodings/binary.rb +3 -22
- data/lib/mail/encodings/identity.rb +24 -0
- data/lib/mail/encodings/quoted_printable.rb +6 -6
- data/lib/mail/encodings/transfer_encoding.rb +38 -29
- data/lib/mail/encodings/unix_to_unix.rb +3 -1
- data/lib/mail/encodings.rb +81 -54
- data/lib/mail/envelope.rb +11 -14
- data/lib/mail/field.rb +119 -98
- data/lib/mail/field_list.rb +60 -7
- data/lib/mail/fields/bcc_field.rb +34 -52
- data/lib/mail/fields/cc_field.rb +28 -49
- data/lib/mail/fields/comments_field.rb +27 -37
- data/lib/mail/fields/common_address_field.rb +170 -0
- data/lib/mail/fields/common_date_field.rb +58 -0
- data/lib/mail/fields/common_field.rb +77 -0
- data/lib/mail/fields/common_message_id_field.rb +42 -0
- data/lib/mail/fields/content_description_field.rb +7 -14
- data/lib/mail/fields/content_disposition_field.rb +13 -38
- data/lib/mail/fields/content_id_field.rb +24 -51
- data/lib/mail/fields/content_location_field.rb +11 -25
- data/lib/mail/fields/content_transfer_encoding_field.rb +31 -31
- data/lib/mail/fields/content_type_field.rb +50 -80
- data/lib/mail/fields/date_field.rb +23 -52
- data/lib/mail/fields/from_field.rb +28 -49
- data/lib/mail/fields/in_reply_to_field.rb +38 -49
- data/lib/mail/fields/keywords_field.rb +18 -31
- data/lib/mail/fields/message_id_field.rb +25 -71
- data/lib/mail/fields/mime_version_field.rb +19 -30
- data/lib/mail/fields/named_structured_field.rb +11 -0
- data/lib/mail/fields/named_unstructured_field.rb +11 -0
- data/lib/mail/fields/optional_field.rb +9 -7
- data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +13 -11
- data/lib/mail/fields/received_field.rb +43 -57
- data/lib/mail/fields/references_field.rb +35 -49
- data/lib/mail/fields/reply_to_field.rb +28 -49
- data/lib/mail/fields/resent_bcc_field.rb +28 -49
- data/lib/mail/fields/resent_cc_field.rb +28 -49
- data/lib/mail/fields/resent_date_field.rb +5 -30
- data/lib/mail/fields/resent_from_field.rb +28 -49
- data/lib/mail/fields/resent_message_id_field.rb +5 -29
- data/lib/mail/fields/resent_sender_field.rb +27 -56
- data/lib/mail/fields/resent_to_field.rb +28 -49
- data/lib/mail/fields/return_path_field.rb +50 -54
- data/lib/mail/fields/sender_field.rb +34 -55
- data/lib/mail/fields/structured_field.rb +3 -30
- data/lib/mail/fields/subject_field.rb +9 -11
- data/lib/mail/fields/to_field.rb +28 -49
- data/lib/mail/fields/unstructured_field.rb +32 -47
- data/lib/mail/header.rb +71 -110
- data/lib/mail/mail.rb +2 -10
- data/lib/mail/matchers/attachment_matchers.rb +15 -0
- data/lib/mail/matchers/has_sent_mail.rb +21 -1
- data/lib/mail/message.rb +113 -117
- data/lib/mail/multibyte/chars.rb +21 -178
- data/lib/mail/multibyte/unicode.rb +10 -10
- data/lib/mail/multibyte/utils.rb +26 -43
- data/lib/mail/multibyte.rb +55 -16
- data/lib/mail/network/delivery_methods/exim.rb +5 -4
- data/lib/mail/network/delivery_methods/file_delivery.rb +11 -10
- data/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
- data/lib/mail/network/delivery_methods/sendmail.rb +62 -21
- data/lib/mail/network/delivery_methods/smtp.rb +75 -50
- data/lib/mail/network/delivery_methods/smtp_connection.rb +3 -4
- data/lib/mail/network/delivery_methods/test_mailer.rb +4 -2
- data/lib/mail/network/retriever_methods/base.rb +8 -8
- data/lib/mail/network/retriever_methods/imap.rb +20 -7
- data/lib/mail/network/retriever_methods/pop3.rb +5 -3
- data/lib/mail/network/retriever_methods/test_retriever.rb +2 -1
- data/lib/mail/network.rb +1 -0
- data/lib/mail/parser_tools.rb +15 -0
- data/lib/mail/parsers/address_lists_parser.rb +33225 -116
- data/lib/mail/parsers/address_lists_parser.rl +179 -0
- data/lib/mail/parsers/content_disposition_parser.rb +882 -49
- data/lib/mail/parsers/content_disposition_parser.rl +89 -0
- data/lib/mail/parsers/content_location_parser.rb +809 -23
- data/lib/mail/parsers/content_location_parser.rl +78 -0
- data/lib/mail/parsers/content_transfer_encoding_parser.rb +509 -21
- data/lib/mail/parsers/content_transfer_encoding_parser.rl +71 -0
- data/lib/mail/parsers/content_type_parser.rb +1037 -56
- data/lib/mail/parsers/content_type_parser.rl +90 -0
- data/lib/mail/parsers/date_time_parser.rb +877 -25
- data/lib/mail/parsers/date_time_parser.rl +69 -0
- data/lib/mail/parsers/envelope_from_parser.rb +3669 -40
- data/lib/mail/parsers/envelope_from_parser.rl +89 -0
- data/lib/mail/parsers/message_ids_parser.rb +5146 -25
- data/lib/mail/parsers/message_ids_parser.rl +93 -0
- data/lib/mail/parsers/mime_version_parser.rb +497 -26
- data/lib/mail/parsers/mime_version_parser.rl +68 -0
- data/lib/mail/parsers/phrase_lists_parser.rb +870 -22
- data/lib/mail/parsers/phrase_lists_parser.rl +90 -0
- data/lib/mail/parsers/received_parser.rb +8776 -43
- data/lib/mail/parsers/received_parser.rl +91 -0
- data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
- data/lib/mail/parsers/rfc2045_content_type.rl +25 -0
- data/lib/mail/parsers/rfc2045_mime.rl +16 -0
- data/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
- data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
- data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
- data/lib/mail/parsers/rfc5322.rl +74 -0
- data/lib/mail/parsers/rfc5322_address.rl +72 -0
- data/lib/mail/parsers/{ragel/date_time.rl → rfc5322_date_time.rl} +8 -1
- data/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
- data/lib/mail/parsers.rb +11 -25
- data/lib/mail/part.rb +6 -10
- data/lib/mail/parts_list.rb +62 -6
- data/lib/mail/smtp_envelope.rb +57 -0
- data/lib/mail/utilities.rb +343 -74
- data/lib/mail/version.rb +2 -2
- data/lib/mail/yaml.rb +30 -0
- data/lib/mail.rb +5 -35
- metadata +111 -66
- data/CHANGELOG.rdoc +0 -803
- data/CONTRIBUTING.md +0 -60
- data/Dependencies.txt +0 -2
- data/Gemfile +0 -14
- data/Rakefile +0 -29
- data/TODO.rdoc +0 -9
- data/lib/mail/core_extensions/smtp.rb +0 -25
- data/lib/mail/core_extensions/string/access.rb +0 -146
- data/lib/mail/core_extensions/string/multibyte.rb +0 -79
- data/lib/mail/core_extensions/string.rb +0 -21
- data/lib/mail/fields/common/address_container.rb +0 -17
- data/lib/mail/fields/common/common_address.rb +0 -136
- data/lib/mail/fields/common/common_date.rb +0 -36
- data/lib/mail/fields/common/common_field.rb +0 -61
- data/lib/mail/fields/common/common_message_id.rb +0 -49
- data/lib/mail/multibyte/exceptions.rb +0 -9
- data/lib/mail/parsers/ragel/common.rl +0 -185
- data/lib/mail/parsers/ragel/parser_info.rb +0 -61
- data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb +0 -14864
- data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb +0 -751
- data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb +0 -614
- data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb +0 -447
- data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb +0 -825
- data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb +0 -817
- data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb +0 -2149
- data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb +0 -1570
- data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb +0 -440
- data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb +0 -564
- data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl +0 -51
- data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb +0 -5144
- data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl +0 -37
- data/lib/mail/parsers/ragel/ruby/parser.rb.rl.erb +0 -37
- data/lib/mail/parsers/ragel/ruby.rb +0 -40
- data/lib/mail/parsers/ragel.rb +0 -18
- data/lib/mail/version_specific/ruby_1_8.rb +0 -126
- data/lib/mail/version_specific/ruby_1_9.rb +0 -226
| @@ -1,36 +1,11 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            # resent-date     =       "Resent-Date:" date-time CRLF
         | 
| 5 | 
            -
            require 'mail/fields/common/common_date'
         | 
| 3 | 
            +
            require 'mail/fields/common_date_field'
         | 
| 6 4 |  | 
| 7 5 | 
             
            module Mail
         | 
| 8 | 
            -
               | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
                
         | 
| 12 | 
            -
                FIELD_NAME = 'resent-date'
         | 
| 13 | 
            -
                CAPITALIZED_FIELD = 'Resent-Date'
         | 
| 14 | 
            -
                
         | 
| 15 | 
            -
                def initialize(value = nil, charset = 'utf-8')
         | 
| 16 | 
            -
                  self.charset = charset
         | 
| 17 | 
            -
                  if Utilities.blank?(value)
         | 
| 18 | 
            -
                    value = ::DateTime.now.strftime('%a, %d %b %Y %H:%M:%S %z')
         | 
| 19 | 
            -
                  else
         | 
| 20 | 
            -
                    value = strip_field(FIELD_NAME, value)
         | 
| 21 | 
            -
                    value = ::DateTime.parse(value.to_s).strftime('%a, %d %b %Y %H:%M:%S %z')
         | 
| 22 | 
            -
                  end
         | 
| 23 | 
            -
                  super(CAPITALIZED_FIELD, value, charset)
         | 
| 24 | 
            -
                  self
         | 
| 25 | 
            -
                end
         | 
| 26 | 
            -
                
         | 
| 27 | 
            -
                def encoded
         | 
| 28 | 
            -
                  do_encode(CAPITALIZED_FIELD)
         | 
| 29 | 
            -
                end
         | 
| 30 | 
            -
                
         | 
| 31 | 
            -
                def decoded
         | 
| 32 | 
            -
                  do_decode
         | 
| 33 | 
            -
                end
         | 
| 34 | 
            -
                
         | 
| 6 | 
            +
              #
         | 
| 7 | 
            +
              # resent-date     =       "Resent-Date:" date-time CRLF
         | 
| 8 | 
            +
              class ResentDateField < CommonDateField #:nodoc:
         | 
| 9 | 
            +
                NAME = 'Resent-Date'
         | 
| 35 10 | 
             
              end
         | 
| 36 11 | 
             
            end
         | 
| @@ -1,55 +1,34 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            # = Resent-From Field
         | 
| 5 | 
            -
            # 
         | 
| 6 | 
            -
            # The Resent-From field inherits resent-from StructuredField and handles the Resent-From: header
         | 
| 7 | 
            -
            # field in the email.
         | 
| 8 | 
            -
            # 
         | 
| 9 | 
            -
            # Sending resent_from to a mail message will instantiate a Mail::Field object that
         | 
| 10 | 
            -
            # has a ResentFromField as its field type.  This includes all Mail::CommonAddress
         | 
| 11 | 
            -
            # module instance metods.
         | 
| 12 | 
            -
            # 
         | 
| 13 | 
            -
            # Only one Resent-From field can appear in a header, though it can have multiple
         | 
| 14 | 
            -
            # addresses and groups of addresses.
         | 
| 15 | 
            -
            # 
         | 
| 16 | 
            -
            # == Examples:
         | 
| 17 | 
            -
            #
         | 
| 18 | 
            -
            #  mail = Mail.new
         | 
| 19 | 
            -
            #  mail.resent_from = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 20 | 
            -
            #  mail.resent_from    #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
         | 
| 21 | 
            -
            #  mail[:resent_from]  #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentFromField:0x180e1c4
         | 
| 22 | 
            -
            #  mail['resent-from'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentFromField:0x180e1c4
         | 
| 23 | 
            -
            #  mail['Resent-From'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentFromField:0x180e1c4
         | 
| 24 | 
            -
            # 
         | 
| 25 | 
            -
            #  mail[:resent_from].encoded   #=> 'Resent-From: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
         | 
| 26 | 
            -
            #  mail[:resent_from].decoded   #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 27 | 
            -
            #  mail[:resent_from].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
         | 
| 28 | 
            -
            #  mail[:resent_from].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
         | 
| 29 | 
            -
            # 
         | 
| 30 | 
            -
            require 'mail/fields/common/common_address'
         | 
| 3 | 
            +
            require 'mail/fields/common_address_field'
         | 
| 31 4 |  | 
| 32 5 | 
             
            module Mail
         | 
| 33 | 
            -
               | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
                
         | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 6 | 
            +
              # = Resent-From Field
         | 
| 7 | 
            +
              #
         | 
| 8 | 
            +
              # The Resent-From field inherits resent-from StructuredField and handles the Resent-From: header
         | 
| 9 | 
            +
              # field in the email.
         | 
| 10 | 
            +
              #
         | 
| 11 | 
            +
              # Sending resent_from to a mail message will instantiate a Mail::Field object that
         | 
| 12 | 
            +
              # has a ResentFromField as its field type.  This includes all Mail::CommonAddress
         | 
| 13 | 
            +
              # module instance metods.
         | 
| 14 | 
            +
              #
         | 
| 15 | 
            +
              # Only one Resent-From field can appear in a header, though it can have multiple
         | 
| 16 | 
            +
              # addresses and groups of addresses.
         | 
| 17 | 
            +
              #
         | 
| 18 | 
            +
              # == Examples:
         | 
| 19 | 
            +
              #
         | 
| 20 | 
            +
              #  mail = Mail.new
         | 
| 21 | 
            +
              #  mail.resent_from = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 22 | 
            +
              #  mail.resent_from    #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
         | 
| 23 | 
            +
              #  mail[:resent_from]  #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentFromField:0x180e1c4
         | 
| 24 | 
            +
              #  mail['resent-from'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentFromField:0x180e1c4
         | 
| 25 | 
            +
              #  mail['Resent-From'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentFromField:0x180e1c4
         | 
| 26 | 
            +
              #
         | 
| 27 | 
            +
              #  mail[:resent_from].encoded   #=> 'Resent-From: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
         | 
| 28 | 
            +
              #  mail[:resent_from].decoded   #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 29 | 
            +
              #  mail[:resent_from].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
         | 
| 30 | 
            +
              #  mail[:resent_from].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
         | 
| 31 | 
            +
              class ResentFromField < CommonAddressField #:nodoc:
         | 
| 32 | 
            +
                NAME = 'Resent-From'
         | 
| 54 33 | 
             
              end
         | 
| 55 34 | 
             
            end
         | 
| @@ -1,35 +1,11 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            # resent-msg-id   =       "Resent-Message-ID:" msg-id CRLF
         | 
| 5 | 
            -
            require 'mail/fields/common/common_message_id'
         | 
| 3 | 
            +
            require 'mail/fields/common_message_id_field'
         | 
| 6 4 |  | 
| 7 5 | 
             
            module Mail
         | 
| 8 | 
            -
               | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
                
         | 
| 12 | 
            -
                FIELD_NAME = 'resent-message-id'
         | 
| 13 | 
            -
                CAPITALIZED_FIELD = 'Resent-Message-ID'
         | 
| 14 | 
            -
                
         | 
| 15 | 
            -
                def initialize(value = nil, charset = 'utf-8')
         | 
| 16 | 
            -
                  self.charset = charset
         | 
| 17 | 
            -
                  super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
         | 
| 18 | 
            -
                  self.parse
         | 
| 19 | 
            -
                  self
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
                
         | 
| 22 | 
            -
                def name
         | 
| 23 | 
            -
                  'Resent-Message-ID'
         | 
| 24 | 
            -
                end
         | 
| 25 | 
            -
                
         | 
| 26 | 
            -
                def encoded
         | 
| 27 | 
            -
                  do_encode(CAPITALIZED_FIELD)
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
                
         | 
| 30 | 
            -
                def decoded
         | 
| 31 | 
            -
                  do_decode
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
                
         | 
| 6 | 
            +
              #
         | 
| 7 | 
            +
              # resent-msg-id   =       "Resent-Message-ID:" msg-id CRLF
         | 
| 8 | 
            +
              class ResentMessageIdField < CommonMessageIdField #:nodoc:
         | 
| 9 | 
            +
                NAME = 'Resent-Message-ID'
         | 
| 34 10 | 
             
              end
         | 
| 35 11 | 
             
            end
         | 
| @@ -1,62 +1,33 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            # = Resent-Sender Field
         | 
| 5 | 
            -
            # 
         | 
| 6 | 
            -
            # The Resent-Sender field inherits resent-sender StructuredField and handles the Resent-Sender: header
         | 
| 7 | 
            -
            # field in the email.
         | 
| 8 | 
            -
            # 
         | 
| 9 | 
            -
            # Sending resent_sender to a mail message will instantiate a Mail::Field object that
         | 
| 10 | 
            -
            # has a ResentSenderField as its field type.  This includes all Mail::CommonAddress
         | 
| 11 | 
            -
            # module instance metods.
         | 
| 12 | 
            -
            # 
         | 
| 13 | 
            -
            # Only one Resent-Sender field can appear in a header, though it can have multiple
         | 
| 14 | 
            -
            # addresses and groups of addresses.
         | 
| 15 | 
            -
            # 
         | 
| 16 | 
            -
            # == Examples:
         | 
| 17 | 
            -
            # 
         | 
| 18 | 
            -
            #  mail = Mail.new
         | 
| 19 | 
            -
            #  mail.resent_sender = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 20 | 
            -
            #  mail.resent_sender    #=> ['mikel@test.lindsaar.net']
         | 
| 21 | 
            -
            #  mail[:resent_sender]  #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
         | 
| 22 | 
            -
            #  mail['resent-sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
         | 
| 23 | 
            -
            #  mail['Resent-Sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
         | 
| 24 | 
            -
            # 
         | 
| 25 | 
            -
            #  mail.resent_sender.to_s  #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 26 | 
            -
            #  mail.resent_sender.addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
         | 
| 27 | 
            -
            #  mail.resent_sender.formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
         | 
| 28 | 
            -
            # 
         | 
| 29 | 
            -
            require 'mail/fields/common/common_address'
         | 
| 3 | 
            +
            require 'mail/fields/common_address_field'
         | 
| 30 4 |  | 
| 31 5 | 
             
            module Mail
         | 
| 32 | 
            -
               | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
                 | 
| 58 | 
            -
                  do_decode
         | 
| 59 | 
            -
                end
         | 
| 60 | 
            -
                
         | 
| 6 | 
            +
              # = Resent-Sender Field
         | 
| 7 | 
            +
              #
         | 
| 8 | 
            +
              # The Resent-Sender field inherits resent-sender StructuredField and handles the Resent-Sender: header
         | 
| 9 | 
            +
              # field in the email.
         | 
| 10 | 
            +
              #
         | 
| 11 | 
            +
              # Sending resent_sender to a mail message will instantiate a Mail::Field object that
         | 
| 12 | 
            +
              # has a ResentSenderField as its field type.  This includes all Mail::CommonAddress
         | 
| 13 | 
            +
              # module instance metods.
         | 
| 14 | 
            +
              #
         | 
| 15 | 
            +
              # Only one Resent-Sender field can appear in a header, though it can have multiple
         | 
| 16 | 
            +
              # addresses and groups of addresses.
         | 
| 17 | 
            +
              #
         | 
| 18 | 
            +
              # == Examples:
         | 
| 19 | 
            +
              #
         | 
| 20 | 
            +
              #  mail = Mail.new
         | 
| 21 | 
            +
              #  mail.resent_sender = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 22 | 
            +
              #  mail.resent_sender    #=> ['mikel@test.lindsaar.net']
         | 
| 23 | 
            +
              #  mail[:resent_sender]  #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
         | 
| 24 | 
            +
              #  mail['resent-sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
         | 
| 25 | 
            +
              #  mail['Resent-Sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
         | 
| 26 | 
            +
              #
         | 
| 27 | 
            +
              #  mail.resent_sender.to_s  #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 28 | 
            +
              #  mail.resent_sender.addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
         | 
| 29 | 
            +
              #  mail.resent_sender.formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
         | 
| 30 | 
            +
              class ResentSenderField < CommonAddressField #:nodoc:
         | 
| 31 | 
            +
                NAME = 'Resent-Sender'
         | 
| 61 32 | 
             
              end
         | 
| 62 33 | 
             
            end
         | 
| @@ -1,55 +1,34 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            # = Resent-To Field
         | 
| 5 | 
            -
            # 
         | 
| 6 | 
            -
            # The Resent-To field inherits resent-to StructuredField and handles the Resent-To: header
         | 
| 7 | 
            -
            # field in the email.
         | 
| 8 | 
            -
            # 
         | 
| 9 | 
            -
            # Sending resent_to to a mail message will instantiate a Mail::Field object that
         | 
| 10 | 
            -
            # has a ResentToField as its field type.  This includes all Mail::CommonAddress
         | 
| 11 | 
            -
            # module instance metods.
         | 
| 12 | 
            -
            # 
         | 
| 13 | 
            -
            # Only one Resent-To field can appear in a header, though it can have multiple
         | 
| 14 | 
            -
            # addresses and groups of addresses.
         | 
| 15 | 
            -
            # 
         | 
| 16 | 
            -
            # == Examples:
         | 
| 17 | 
            -
            # 
         | 
| 18 | 
            -
            #  mail = Mail.new
         | 
| 19 | 
            -
            #  mail.resent_to = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 20 | 
            -
            #  mail.resent_to    #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
         | 
| 21 | 
            -
            #  mail[:resent_to]  #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
         | 
| 22 | 
            -
            #  mail['resent-to'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
         | 
| 23 | 
            -
            #  mail['Resent-To'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
         | 
| 24 | 
            -
            # 
         | 
| 25 | 
            -
            #  mail[:resent_to].encoded   #=> 'Resent-To: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
         | 
| 26 | 
            -
            #  mail[:resent_to].decoded   #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 27 | 
            -
            #  mail[:resent_to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
         | 
| 28 | 
            -
            #  mail[:resent_to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
         | 
| 29 | 
            -
            # 
         | 
| 30 | 
            -
            require 'mail/fields/common/common_address'
         | 
| 3 | 
            +
            require 'mail/fields/common_address_field'
         | 
| 31 4 |  | 
| 32 5 | 
             
            module Mail
         | 
| 33 | 
            -
               | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
                
         | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 6 | 
            +
              # = Resent-To Field
         | 
| 7 | 
            +
              #
         | 
| 8 | 
            +
              # The Resent-To field inherits resent-to StructuredField and handles the Resent-To: header
         | 
| 9 | 
            +
              # field in the email.
         | 
| 10 | 
            +
              #
         | 
| 11 | 
            +
              # Sending resent_to to a mail message will instantiate a Mail::Field object that
         | 
| 12 | 
            +
              # has a ResentToField as its field type.  This includes all Mail::CommonAddress
         | 
| 13 | 
            +
              # module instance metods.
         | 
| 14 | 
            +
              #
         | 
| 15 | 
            +
              # Only one Resent-To field can appear in a header, though it can have multiple
         | 
| 16 | 
            +
              # addresses and groups of addresses.
         | 
| 17 | 
            +
              #
         | 
| 18 | 
            +
              # == Examples:
         | 
| 19 | 
            +
              #
         | 
| 20 | 
            +
              #  mail = Mail.new
         | 
| 21 | 
            +
              #  mail.resent_to = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 22 | 
            +
              #  mail.resent_to    #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
         | 
| 23 | 
            +
              #  mail[:resent_to]  #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
         | 
| 24 | 
            +
              #  mail['resent-to'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
         | 
| 25 | 
            +
              #  mail['Resent-To'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
         | 
| 26 | 
            +
              #
         | 
| 27 | 
            +
              #  mail[:resent_to].encoded   #=> 'Resent-To: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
         | 
| 28 | 
            +
              #  mail[:resent_to].decoded   #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
         | 
| 29 | 
            +
              #  mail[:resent_to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
         | 
| 30 | 
            +
              #  mail[:resent_to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
         | 
| 31 | 
            +
              class ResentToField < CommonAddressField #:nodoc:
         | 
| 32 | 
            +
                NAME = 'Resent-To'
         | 
| 54 33 | 
             
              end
         | 
| 55 34 | 
             
            end
         | 
| @@ -1,65 +1,61 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            # 4.4.3.  REPLY-TO / RESENT-REPLY-TO
         | 
| 5 | 
            -
            # 
         | 
| 6 | 
            -
            #    Note:  The "Return-Path" field is added by the mail  transport
         | 
| 7 | 
            -
            #           service,  at the time of final deliver.  It is intended
         | 
| 8 | 
            -
            #           to identify a path back to the orginator  of  the  mes-
         | 
| 9 | 
            -
            #           sage.   The  "Reply-To"  field  is added by the message
         | 
| 10 | 
            -
            #           originator and is intended to direct replies.
         | 
| 11 | 
            -
            # 
         | 
| 12 | 
            -
            # trace           =       [return]
         | 
| 13 | 
            -
            #                         1*received
         | 
| 14 | 
            -
            # 
         | 
| 15 | 
            -
            # return          =       "Return-Path:" path CRLF
         | 
| 16 | 
            -
            # 
         | 
| 17 | 
            -
            # path            =       ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) /
         | 
| 18 | 
            -
            #                         obs-path
         | 
| 19 | 
            -
            # 
         | 
| 20 | 
            -
            # received        =       "Received:" name-val-list ";" date-time CRLF
         | 
| 21 | 
            -
            # 
         | 
| 22 | 
            -
            # name-val-list   =       [CFWS] [name-val-pair *(CFWS name-val-pair)]
         | 
| 23 | 
            -
            # 
         | 
| 24 | 
            -
            # name-val-pair   =       item-name CFWS item-value
         | 
| 25 | 
            -
            # 
         | 
| 26 | 
            -
            # item-name       =       ALPHA *(["-"] (ALPHA / DIGIT))
         | 
| 27 | 
            -
            # 
         | 
| 28 | 
            -
            # item-value      =       1*angle-addr / addr-spec /
         | 
| 29 | 
            -
            #                          atom / domain / msg-id
         | 
| 30 | 
            -
            # 
         | 
| 31 | 
            -
            require 'mail/fields/common/common_address'
         | 
| 3 | 
            +
            require 'mail/fields/common_address_field'
         | 
| 32 4 |  | 
| 33 5 | 
             
            module Mail
         | 
| 34 | 
            -
               | 
| 35 | 
            -
             | 
| 36 | 
            -
                 | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 6 | 
            +
              # 4.4.3.  REPLY-TO / RESENT-REPLY-TO
         | 
| 7 | 
            +
              #
         | 
| 8 | 
            +
              #    Note:  The "Return-Path" field is added by the mail  transport
         | 
| 9 | 
            +
              #           service,  at the time of final deliver.  It is intended
         | 
| 10 | 
            +
              #           to identify a path back to the orginator  of  the  mes-
         | 
| 11 | 
            +
              #           sage.   The  "Reply-To"  field  is added by the message
         | 
| 12 | 
            +
              #           originator and is intended to direct replies.
         | 
| 13 | 
            +
              #
         | 
| 14 | 
            +
              # trace           =       [return]
         | 
| 15 | 
            +
              #                         1*received
         | 
| 16 | 
            +
              #
         | 
| 17 | 
            +
              # return          =       "Return-Path:" path CRLF
         | 
| 18 | 
            +
              #
         | 
| 19 | 
            +
              # path            =       ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) /
         | 
| 20 | 
            +
              #                         obs-path
         | 
| 21 | 
            +
              #
         | 
| 22 | 
            +
              # received        =       "Received:" name-val-list ";" date-time CRLF
         | 
| 23 | 
            +
              #
         | 
| 24 | 
            +
              # name-val-list   =       [CFWS] [name-val-pair *(CFWS name-val-pair)]
         | 
| 25 | 
            +
              #
         | 
| 26 | 
            +
              # name-val-pair   =       item-name CFWS item-value
         | 
| 27 | 
            +
              #
         | 
| 28 | 
            +
              # item-name       =       ALPHA *(["-"] (ALPHA / DIGIT))
         | 
| 29 | 
            +
              #
         | 
| 30 | 
            +
              # item-value      =       1*angle-addr / addr-spec /
         | 
| 31 | 
            +
              #                          atom / domain / msg-id
         | 
| 32 | 
            +
              #
         | 
| 33 | 
            +
              class ReturnPathField < CommonAddressField #:nodoc:
         | 
| 34 | 
            +
                NAME = 'Return-Path'
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def self.singular?
         | 
| 37 | 
            +
                  true
         | 
| 54 38 | 
             
                end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                def  | 
| 57 | 
            -
                   | 
| 39 | 
            +
             | 
| 40 | 
            +
                def initialize(value = nil, charset = nil)
         | 
| 41 | 
            +
                  if value == '<>'
         | 
| 42 | 
            +
                    super nil, charset
         | 
| 43 | 
            +
                  else
         | 
| 44 | 
            +
                    super
         | 
| 45 | 
            +
                  end
         | 
| 58 46 | 
             
                end
         | 
| 59 | 
            -
             | 
| 47 | 
            +
             | 
| 60 48 | 
             
                def default
         | 
| 61 49 | 
             
                  address
         | 
| 62 50 | 
             
                end
         | 
| 63 | 
            -
             | 
| 51 | 
            +
             | 
| 52 | 
            +
                private
         | 
| 53 | 
            +
                  def do_encode
         | 
| 54 | 
            +
                    "#{name}: <#{address}>\r\n"
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                  def do_decode
         | 
| 58 | 
            +
                    address
         | 
| 59 | 
            +
                  end
         | 
| 64 60 | 
             
              end
         | 
| 65 61 | 
             
            end
         | 
| @@ -1,67 +1,46 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            # = Sender Field
         | 
| 5 | 
            -
            # 
         | 
| 6 | 
            -
            # The Sender field inherits sender StructuredField and handles the Sender: header
         | 
| 7 | 
            -
            # field in the email.
         | 
| 8 | 
            -
            # 
         | 
| 9 | 
            -
            # Sending sender to a mail message will instantiate a Mail::Field object that
         | 
| 10 | 
            -
            # has a SenderField as its field type.  This includes all Mail::CommonAddress
         | 
| 11 | 
            -
            # module instance metods.
         | 
| 12 | 
            -
            # 
         | 
| 13 | 
            -
            # Only one Sender field can appear in a header, though it can have multiple
         | 
| 14 | 
            -
            # addresses and groups of addresses.
         | 
| 15 | 
            -
            # 
         | 
| 16 | 
            -
            # == Examples:
         | 
| 17 | 
            -
            # 
         | 
| 18 | 
            -
            #  mail = Mail.new
         | 
| 19 | 
            -
            #  mail.sender = 'Mikel Lindsaar <mikel@test.lindsaar.net>'
         | 
| 20 | 
            -
            #  mail.sender    #=> 'mikel@test.lindsaar.net'
         | 
| 21 | 
            -
            #  mail[:sender]  #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
         | 
| 22 | 
            -
            #  mail['sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
         | 
| 23 | 
            -
            #  mail['Sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
         | 
| 24 | 
            -
            # 
         | 
| 25 | 
            -
            #  mail[:sender].encoded   #=> "Sender: Mikel Lindsaar <mikel@test.lindsaar.net>\r\n"
         | 
| 26 | 
            -
            #  mail[:sender].decoded   #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>'
         | 
| 27 | 
            -
            #  mail[:sender].addresses #=> ['mikel@test.lindsaar.net']
         | 
| 28 | 
            -
            #  mail[:sender].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>']
         | 
| 29 | 
            -
            # 
         | 
| 30 | 
            -
            require 'mail/fields/common/common_address'
         | 
| 3 | 
            +
            require 'mail/fields/common_address_field'
         | 
| 31 4 |  | 
| 32 5 | 
             
            module Mail
         | 
| 33 | 
            -
               | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 6 | 
            +
              # = Sender Field
         | 
| 7 | 
            +
              #
         | 
| 8 | 
            +
              # The Sender field inherits sender StructuredField and handles the Sender: header
         | 
| 9 | 
            +
              # field in the email.
         | 
| 10 | 
            +
              #
         | 
| 11 | 
            +
              # Sending sender to a mail message will instantiate a Mail::Field object that
         | 
| 12 | 
            +
              # has a SenderField as its field type.  This includes all Mail::CommonAddress
         | 
| 13 | 
            +
              # module instance metods.
         | 
| 14 | 
            +
              #
         | 
| 15 | 
            +
              # Only one Sender field can appear in a header, though it can have multiple
         | 
| 16 | 
            +
              # addresses and groups of addresses.
         | 
| 17 | 
            +
              #
         | 
| 18 | 
            +
              # == Examples:
         | 
| 19 | 
            +
              #
         | 
| 20 | 
            +
              #  mail = Mail.new
         | 
| 21 | 
            +
              #  mail.sender = 'Mikel Lindsaar <mikel@test.lindsaar.net>'
         | 
| 22 | 
            +
              #  mail.sender    #=> 'mikel@test.lindsaar.net'
         | 
| 23 | 
            +
              #  mail[:sender]  #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
         | 
| 24 | 
            +
              #  mail['sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
         | 
| 25 | 
            +
              #  mail['Sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
         | 
| 26 | 
            +
              #
         | 
| 27 | 
            +
              #  mail[:sender].encoded   #=> "Sender: Mikel Lindsaar <mikel@test.lindsaar.net>\r\n"
         | 
| 28 | 
            +
              #  mail[:sender].decoded   #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>'
         | 
| 29 | 
            +
              #  mail[:sender].addresses #=> ['mikel@test.lindsaar.net']
         | 
| 30 | 
            +
              #  mail[:sender].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>']
         | 
| 31 | 
            +
              class SenderField < CommonAddressField #:nodoc:
         | 
| 32 | 
            +
                NAME = 'Sender'
         | 
| 39 33 |  | 
| 40 | 
            -
                def  | 
| 41 | 
            -
                   | 
| 42 | 
            -
                  super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
         | 
| 43 | 
            -
                  self
         | 
| 34 | 
            +
                def self.singular?
         | 
| 35 | 
            +
                  true
         | 
| 44 36 | 
             
                end
         | 
| 45 37 |  | 
| 46 | 
            -
                def  | 
| 47 | 
            -
                   | 
| 38 | 
            +
                def default
         | 
| 39 | 
            +
                  address
         | 
| 48 40 | 
             
                end
         | 
| 49 41 |  | 
| 50 | 
            -
                def  | 
| 51 | 
            -
                   | 
| 52 | 
            -
                end
         | 
| 53 | 
            -
                
         | 
| 54 | 
            -
                def encoded
         | 
| 55 | 
            -
                  do_encode(CAPITALIZED_FIELD)
         | 
| 56 | 
            -
                end
         | 
| 57 | 
            -
                
         | 
| 58 | 
            -
                def decoded
         | 
| 59 | 
            -
                  do_decode
         | 
| 60 | 
            -
                end
         | 
| 61 | 
            -
                
         | 
| 62 | 
            -
                def default
         | 
| 63 | 
            -
                  address.address
         | 
| 42 | 
            +
                def addresses
         | 
| 43 | 
            +
                  Array(super.first)
         | 
| 64 44 | 
             
                end
         | 
| 65 | 
            -
                
         | 
| 66 45 | 
             
              end
         | 
| 67 46 | 
             
            end
         | 
| @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 | 
            -
            require 'mail/fields/ | 
| 3 | 
            +
            require 'mail/fields/common_field'
         | 
| 4 4 |  | 
| 5 5 | 
             
            module Mail
         | 
| 6 6 | 
             
              # Provides access to a structured header field
         | 
| 7 7 | 
             
              #
         | 
| 8 8 | 
             
              # ===Per RFC 2822:
         | 
| 9 9 | 
             
              #  2.2.2. Structured Header Field Bodies
         | 
| 10 | 
            -
              # | 
| 10 | 
            +
              #
         | 
| 11 11 | 
             
              #     Some field bodies in this standard have specific syntactical
         | 
| 12 12 | 
             
              #     structure more restrictive than the unstructured field bodies
         | 
| 13 13 | 
             
              #     described above. These are referred to as "structured" field bodies.
         | 
| @@ -20,33 +20,6 @@ module Mail | |
| 20 20 | 
             
              #     characters are subject to header "folding" and "unfolding" as
         | 
| 21 21 | 
             
              #     described in section 2.2.3.  Semantic analysis of structured field
         | 
| 22 22 | 
             
              #     bodies is given along with their syntax.
         | 
| 23 | 
            -
              class StructuredField
         | 
| 24 | 
            -
                
         | 
| 25 | 
            -
                include Mail::CommonField
         | 
| 26 | 
            -
                include Mail::Utilities
         | 
| 27 | 
            -
                
         | 
| 28 | 
            -
                def initialize(name = nil, value = nil, charset = nil)
         | 
| 29 | 
            -
                  self.name    = name
         | 
| 30 | 
            -
                  self.value   = value
         | 
| 31 | 
            -
                  self.charset = charset
         | 
| 32 | 
            -
                  self
         | 
| 33 | 
            -
                end
         | 
| 34 | 
            -
                
         | 
| 35 | 
            -
                def charset
         | 
| 36 | 
            -
                  @charset
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
                
         | 
| 39 | 
            -
                def charset=(val)
         | 
| 40 | 
            -
                  @charset = val
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
                
         | 
| 43 | 
            -
                def default
         | 
| 44 | 
            -
                  decoded
         | 
| 45 | 
            -
                end
         | 
| 46 | 
            -
                
         | 
| 47 | 
            -
                def errors
         | 
| 48 | 
            -
                  []
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 23 | 
            +
              class StructuredField < CommonField #:nodoc:
         | 
| 51 24 | 
             
              end
         | 
| 52 25 | 
             
            end
         | 
| @@ -1,17 +1,15 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 3 | 
            +
            require 'mail/fields/named_unstructured_field'
         | 
| 4 | 
            +
             | 
| 5 5 | 
             
            module Mail
         | 
| 6 | 
            -
               | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
                 | 
| 10 | 
            -
             | 
| 11 | 
            -
                def  | 
| 12 | 
            -
                   | 
| 13 | 
            -
                  super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
         | 
| 6 | 
            +
              #
         | 
| 7 | 
            +
              # subject         =       "Subject:" unstructured CRLF
         | 
| 8 | 
            +
              class SubjectField < NamedUnstructuredField #:nodoc:
         | 
| 9 | 
            +
                NAME = 'Subject'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def self.singular?
         | 
| 12 | 
            +
                  true
         | 
| 14 13 | 
             
                end
         | 
| 15 | 
            -
                
         | 
| 16 14 | 
             
              end
         | 
| 17 15 | 
             
            end
         |