mail 2.6.1 → 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 +150 -107
- data/lib/mail/attachments_list.rb +13 -10
- data/lib/mail/body.rb +104 -90
- data/lib/mail/check_delivery_params.rb +55 -10
- data/lib/mail/configuration.rb +3 -0
- data/lib/mail/constants.rb +79 -0
- data/lib/mail/elements/address.rb +96 -108
- data/lib/mail/elements/address_list.rb +13 -30
- data/lib/mail/elements/content_disposition_element.rb +10 -16
- data/lib/mail/elements/content_location_element.rb +9 -13
- data/lib/mail/elements/content_transfer_encoding_element.rb +7 -11
- data/lib/mail/elements/content_type_element.rb +17 -23
- data/lib/mail/elements/date_time_element.rb +8 -15
- data/lib/mail/elements/envelope_from_element.rb +23 -23
- data/lib/mail/elements/message_ids_element.rb +22 -15
- data/lib/mail/elements/mime_version_element.rb +8 -15
- data/lib/mail/elements/phrase_list.rb +13 -10
- data/lib/mail/elements/received_element.rb +28 -19
- data/lib/mail/elements.rb +1 -0
- data/lib/mail/encodings/7bit.rb +10 -14
- data/lib/mail/encodings/8bit.rb +5 -18
- data/lib/mail/encodings/base64.rb +15 -10
- data/lib/mail/encodings/binary.rb +4 -22
- data/lib/mail/encodings/identity.rb +24 -0
- data/lib/mail/encodings/quoted_printable.rb +13 -7
- data/lib/mail/encodings/transfer_encoding.rb +47 -28
- data/lib/mail/encodings/unix_to_unix.rb +20 -0
- data/lib/mail/encodings.rb +102 -92
- data/lib/mail/envelope.rb +12 -14
- data/lib/mail/field.rb +121 -85
- data/lib/mail/field_list.rb +62 -8
- data/lib/mail/fields/bcc_field.rb +42 -48
- data/lib/mail/fields/cc_field.rb +29 -50
- data/lib/mail/fields/comments_field.rb +28 -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 +8 -14
- data/lib/mail/fields/content_disposition_field.rb +20 -44
- data/lib/mail/fields/content_id_field.rb +25 -51
- data/lib/mail/fields/content_location_field.rb +12 -25
- data/lib/mail/fields/content_transfer_encoding_field.rb +32 -31
- data/lib/mail/fields/content_type_field.rb +51 -80
- data/lib/mail/fields/date_field.rb +24 -52
- data/lib/mail/fields/from_field.rb +29 -50
- data/lib/mail/fields/in_reply_to_field.rb +39 -49
- data/lib/mail/fields/keywords_field.rb +19 -32
- data/lib/mail/fields/message_id_field.rb +26 -71
- data/lib/mail/fields/mime_version_field.rb +20 -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 +10 -7
- data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +16 -13
- data/lib/mail/fields/received_field.rb +44 -57
- data/lib/mail/fields/references_field.rb +36 -49
- data/lib/mail/fields/reply_to_field.rb +29 -50
- data/lib/mail/fields/resent_bcc_field.rb +29 -50
- data/lib/mail/fields/resent_cc_field.rb +29 -50
- data/lib/mail/fields/resent_date_field.rb +6 -30
- data/lib/mail/fields/resent_from_field.rb +29 -50
- data/lib/mail/fields/resent_message_id_field.rb +6 -29
- data/lib/mail/fields/resent_sender_field.rb +28 -57
- data/lib/mail/fields/resent_to_field.rb +29 -50
- data/lib/mail/fields/return_path_field.rb +51 -55
- data/lib/mail/fields/sender_field.rb +35 -56
- data/lib/mail/fields/structured_field.rb +4 -30
- data/lib/mail/fields/subject_field.rb +10 -11
- data/lib/mail/fields/to_field.rb +29 -50
- data/lib/mail/fields/unstructured_field.rb +36 -50
- data/lib/mail/fields.rb +1 -0
- data/lib/mail/header.rb +73 -110
- data/lib/mail/indifferent_hash.rb +1 -0
- data/lib/mail/mail.rb +6 -11
- data/lib/mail/matchers/attachment_matchers.rb +44 -0
- data/lib/mail/matchers/has_sent_mail.rb +53 -9
- data/lib/mail/message.rb +132 -136
- data/lib/mail/multibyte/chars.rb +24 -180
- data/lib/mail/multibyte/unicode.rb +31 -26
- data/lib/mail/multibyte/utils.rb +27 -43
- data/lib/mail/multibyte.rb +56 -16
- data/lib/mail/network/delivery_methods/exim.rb +9 -11
- data/lib/mail/network/delivery_methods/file_delivery.rb +14 -16
- data/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
- data/lib/mail/network/delivery_methods/sendmail.rb +68 -24
- data/lib/mail/network/delivery_methods/smtp.rb +77 -54
- data/lib/mail/network/delivery_methods/smtp_connection.rb +5 -9
- data/lib/mail/network/delivery_methods/test_mailer.rb +9 -9
- data/lib/mail/network/retriever_methods/base.rb +9 -8
- data/lib/mail/network/retriever_methods/imap.rb +21 -7
- data/lib/mail/network/retriever_methods/pop3.rb +6 -3
- data/lib/mail/network/retriever_methods/test_retriever.rb +4 -2
- data/lib/mail/network.rb +2 -0
- data/lib/mail/parser_tools.rb +15 -0
- data/lib/mail/parsers/address_lists_parser.rb +33226 -116
- data/lib/mail/parsers/address_lists_parser.rl +179 -0
- data/lib/mail/parsers/content_disposition_parser.rb +883 -49
- data/lib/mail/parsers/content_disposition_parser.rl +89 -0
- data/lib/mail/parsers/content_location_parser.rb +810 -23
- data/lib/mail/parsers/content_location_parser.rl +78 -0
- data/lib/mail/parsers/content_transfer_encoding_parser.rb +510 -21
- data/lib/mail/parsers/content_transfer_encoding_parser.rl +71 -0
- data/lib/mail/parsers/content_type_parser.rb +1031 -47
- data/lib/mail/parsers/content_type_parser.rl +90 -0
- data/lib/mail/parsers/date_time_parser.rb +879 -24
- data/lib/mail/parsers/date_time_parser.rl +69 -0
- data/lib/mail/parsers/envelope_from_parser.rb +3670 -40
- data/lib/mail/parsers/envelope_from_parser.rl +89 -0
- data/lib/mail/parsers/message_ids_parser.rb +5147 -25
- data/lib/mail/parsers/message_ids_parser.rl +93 -0
- data/lib/mail/parsers/mime_version_parser.rb +498 -26
- data/lib/mail/parsers/mime_version_parser.rl +68 -0
- data/lib/mail/parsers/phrase_lists_parser.rb +872 -21
- data/lib/mail/parsers/phrase_lists_parser.rl +90 -0
- data/lib/mail/parsers/received_parser.rb +8777 -42
- 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 +12 -25
- data/lib/mail/part.rb +11 -12
- data/lib/mail/parts_list.rb +88 -14
- data/lib/mail/smtp_envelope.rb +57 -0
- data/lib/mail/utilities.rb +377 -40
- data/lib/mail/values/unicode_tables.dat +0 -0
- data/lib/mail/version.rb +8 -15
- data/lib/mail/yaml.rb +30 -0
- data/lib/mail.rb +9 -32
- metadata +138 -94
- data/CHANGELOG.rdoc +0 -752
- data/CONTRIBUTING.md +0 -60
- data/Dependencies.txt +0 -2
- data/Gemfile +0 -15
- data/Rakefile +0 -29
- data/TODO.rdoc +0 -9
- data/VERSION +0 -4
- data/lib/mail/core_extensions/nil.rb +0 -19
- data/lib/mail/core_extensions/object.rb +0 -13
- data/lib/mail/core_extensions/smtp.rb +0 -24
- data/lib/mail/core_extensions/string/access.rb +0 -145
- data/lib/mail/core_extensions/string/multibyte.rb +0 -78
- data/lib/mail/core_extensions/string.rb +0 -43
- data/lib/mail/fields/common/address_container.rb +0 -16
- data/lib/mail/fields/common/common_address.rb +0 -135
- data/lib/mail/fields/common/common_date.rb +0 -35
- data/lib/mail/fields/common/common_field.rb +0 -57
- data/lib/mail/fields/common/common_message_id.rb +0 -48
- data/lib/mail/multibyte/exceptions.rb +0 -8
- data/lib/mail/parsers/ragel/common.rl +0 -184
- 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 -2129
- 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 -39
- data/lib/mail/parsers/ragel.rb +0 -17
- data/lib/mail/patterns.rb +0 -37
- data/lib/mail/version_specific/ruby_1_8.rb +0 -119
- data/lib/mail/version_specific/ruby_1_9.rb +0 -159
@@ -1,62 +1,33 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
#
|
3
|
-
|
4
|
-
#
|
5
|
-
# The Resent-Sender field inherits resent-sender StructuredField and handles the Resent-Sender: header
|
6
|
-
# field in the email.
|
7
|
-
#
|
8
|
-
# Sending resent_sender to a mail message will instantiate a Mail::Field object that
|
9
|
-
# has a ResentSenderField as its field type. This includes all Mail::CommonAddress
|
10
|
-
# module instance metods.
|
11
|
-
#
|
12
|
-
# Only one Resent-Sender field can appear in a header, though it can have multiple
|
13
|
-
# addresses and groups of addresses.
|
14
|
-
#
|
15
|
-
# == Examples:
|
16
|
-
#
|
17
|
-
# mail = Mail.new
|
18
|
-
# mail.resent_sender = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
19
|
-
# mail.resent_sender #=> ['mikel@test.lindsaar.net']
|
20
|
-
# mail[:resent_sender] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
|
21
|
-
# mail['resent-sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
|
22
|
-
# mail['Resent-Sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
|
23
|
-
#
|
24
|
-
# mail.resent_sender.to_s #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
25
|
-
# mail.resent_sender.addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
26
|
-
# mail.resent_sender.formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
27
|
-
#
|
28
|
-
require 'mail/fields/common/common_address'
|
2
|
+
# frozen_string_literal: true
|
3
|
+
require 'mail/fields/common_address_field'
|
29
4
|
|
30
5
|
module Mail
|
31
|
-
|
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
|
-
def decoded
|
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
|
-
#
|
3
|
-
|
4
|
-
#
|
5
|
-
# The Resent-To field inherits resent-to StructuredField and handles the Resent-To: header
|
6
|
-
# field in the email.
|
7
|
-
#
|
8
|
-
# Sending resent_to to a mail message will instantiate a Mail::Field object that
|
9
|
-
# has a ResentToField as its field type. This includes all Mail::CommonAddress
|
10
|
-
# module instance metods.
|
11
|
-
#
|
12
|
-
# Only one Resent-To field can appear in a header, though it can have multiple
|
13
|
-
# addresses and groups of addresses.
|
14
|
-
#
|
15
|
-
# == Examples:
|
16
|
-
#
|
17
|
-
# mail = Mail.new
|
18
|
-
# mail.resent_to = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
19
|
-
# mail.resent_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
20
|
-
# mail[:resent_to] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
|
21
|
-
# mail['resent-to'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
|
22
|
-
# mail['Resent-To'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
|
23
|
-
#
|
24
|
-
# mail[:resent_to].encoded #=> 'Resent-To: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
25
|
-
# mail[:resent_to].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
26
|
-
# mail[:resent_to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
27
|
-
# mail[:resent_to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
28
|
-
#
|
29
|
-
require 'mail/fields/common/common_address'
|
2
|
+
# frozen_string_literal: true
|
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
|
-
|
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
|
-
#
|
3
|
-
|
4
|
-
#
|
5
|
-
# Note: The "Return-Path" field is added by the mail transport
|
6
|
-
# service, at the time of final deliver. It is intended
|
7
|
-
# to identify a path back to the orginator of the mes-
|
8
|
-
# sage. The "Reply-To" field is added by the message
|
9
|
-
# originator and is intended to direct replies.
|
10
|
-
#
|
11
|
-
# trace = [return]
|
12
|
-
# 1*received
|
13
|
-
#
|
14
|
-
# return = "Return-Path:" path CRLF
|
15
|
-
#
|
16
|
-
# path = ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) /
|
17
|
-
# obs-path
|
18
|
-
#
|
19
|
-
# received = "Received:" name-val-list ";" date-time CRLF
|
20
|
-
#
|
21
|
-
# name-val-list = [CFWS] [name-val-pair *(CFWS name-val-pair)]
|
22
|
-
#
|
23
|
-
# name-val-pair = item-name CFWS item-value
|
24
|
-
#
|
25
|
-
# item-name = ALPHA *(["-"] (ALPHA / DIGIT))
|
26
|
-
#
|
27
|
-
# item-value = 1*angle-addr / addr-spec /
|
28
|
-
# atom / domain / msg-id
|
29
|
-
#
|
30
|
-
require 'mail/fields/common/common_address'
|
2
|
+
# frozen_string_literal: true
|
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
|
+
# 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
|
-
#
|
3
|
-
|
4
|
-
#
|
5
|
-
# The Sender field inherits sender StructuredField and handles the Sender: header
|
6
|
-
# field in the email.
|
7
|
-
#
|
8
|
-
# Sending sender to a mail message will instantiate a Mail::Field object that
|
9
|
-
# has a SenderField as its field type. This includes all Mail::CommonAddress
|
10
|
-
# module instance metods.
|
11
|
-
#
|
12
|
-
# Only one Sender field can appear in a header, though it can have multiple
|
13
|
-
# addresses and groups of addresses.
|
14
|
-
#
|
15
|
-
# == Examples:
|
16
|
-
#
|
17
|
-
# mail = Mail.new
|
18
|
-
# mail.sender = 'Mikel Lindsaar <mikel@test.lindsaar.net>'
|
19
|
-
# mail.sender #=> 'mikel@test.lindsaar.net'
|
20
|
-
# mail[:sender] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
|
21
|
-
# mail['sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
|
22
|
-
# mail['Sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
|
23
|
-
#
|
24
|
-
# mail[:sender].encoded #=> "Sender: Mikel Lindsaar <mikel@test.lindsaar.net>\r\n"
|
25
|
-
# mail[:sender].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>'
|
26
|
-
# mail[:sender].addresses #=> ['mikel@test.lindsaar.net']
|
27
|
-
# mail[:sender].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>']
|
28
|
-
#
|
29
|
-
require 'mail/fields/common/common_address'
|
2
|
+
# frozen_string_literal: true
|
3
|
+
require 'mail/fields/common_address_field'
|
30
4
|
|
31
5
|
module Mail
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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'
|
38
33
|
|
39
|
-
def
|
40
|
-
|
41
|
-
super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
|
42
|
-
self.parse
|
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,12 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
require 'mail/fields/common_field'
|
3
4
|
|
4
5
|
module Mail
|
5
6
|
# Provides access to a structured header field
|
6
7
|
#
|
7
8
|
# ===Per RFC 2822:
|
8
9
|
# 2.2.2. Structured Header Field Bodies
|
9
|
-
#
|
10
|
+
#
|
10
11
|
# Some field bodies in this standard have specific syntactical
|
11
12
|
# structure more restrictive than the unstructured field bodies
|
12
13
|
# described above. These are referred to as "structured" field bodies.
|
@@ -19,33 +20,6 @@ module Mail
|
|
19
20
|
# characters are subject to header "folding" and "unfolding" as
|
20
21
|
# described in section 2.2.3. Semantic analysis of structured field
|
21
22
|
# bodies is given along with their syntax.
|
22
|
-
class StructuredField
|
23
|
-
|
24
|
-
include Mail::CommonField
|
25
|
-
include Mail::Utilities
|
26
|
-
|
27
|
-
def initialize(name = nil, value = nil, charset = nil)
|
28
|
-
self.name = name
|
29
|
-
self.value = value
|
30
|
-
self.charset = charset
|
31
|
-
self
|
32
|
-
end
|
33
|
-
|
34
|
-
def charset
|
35
|
-
@charset
|
36
|
-
end
|
37
|
-
|
38
|
-
def charset=(val)
|
39
|
-
@charset = val
|
40
|
-
end
|
41
|
-
|
42
|
-
def default
|
43
|
-
decoded
|
44
|
-
end
|
45
|
-
|
46
|
-
def errors
|
47
|
-
[]
|
48
|
-
end
|
49
|
-
|
23
|
+
class StructuredField < CommonField #:nodoc:
|
50
24
|
end
|
51
25
|
end
|
@@ -1,16 +1,15 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
#
|
3
|
-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
require 'mail/fields/named_unstructured_field'
|
4
|
+
|
4
5
|
module Mail
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
def
|
11
|
-
|
12
|
-
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
|
13
13
|
end
|
14
|
-
|
15
14
|
end
|
16
15
|
end
|
data/lib/mail/fields/to_field.rb
CHANGED
@@ -1,55 +1,34 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
#
|
3
|
-
|
4
|
-
#
|
5
|
-
# The To field inherits to StructuredField and handles the To: header
|
6
|
-
# field in the email.
|
7
|
-
#
|
8
|
-
# Sending to to a mail message will instantiate a Mail::Field object that
|
9
|
-
# has a ToField as its field type. This includes all Mail::CommonAddress
|
10
|
-
# module instance metods.
|
11
|
-
#
|
12
|
-
# Only one To field can appear in a header, though it can have multiple
|
13
|
-
# addresses and groups of addresses.
|
14
|
-
#
|
15
|
-
# == Examples:
|
16
|
-
#
|
17
|
-
# mail = Mail.new
|
18
|
-
# mail.to = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
19
|
-
# mail.to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
20
|
-
# mail[:to] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ToField:0x180e1c4
|
21
|
-
# mail['to'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ToField:0x180e1c4
|
22
|
-
# mail['To'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ToField:0x180e1c4
|
23
|
-
#
|
24
|
-
# mail[:to].encoded #=> 'To: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
25
|
-
# mail[:to].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
26
|
-
# mail[:to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
27
|
-
# mail[:to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
28
|
-
#
|
29
|
-
require 'mail/fields/common/common_address'
|
2
|
+
# frozen_string_literal: true
|
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
|
-
|
6
|
+
# = To Field
|
7
|
+
#
|
8
|
+
# The To field inherits to StructuredField and handles the To: header
|
9
|
+
# field in the email.
|
10
|
+
#
|
11
|
+
# Sending to to a mail message will instantiate a Mail::Field object that
|
12
|
+
# has a ToField as its field type. This includes all Mail::CommonAddress
|
13
|
+
# module instance metods.
|
14
|
+
#
|
15
|
+
# Only one 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.to = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
22
|
+
# mail.to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
23
|
+
# mail[:to] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ToField:0x180e1c4
|
24
|
+
# mail['to'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ToField:0x180e1c4
|
25
|
+
# mail['To'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ToField:0x180e1c4
|
26
|
+
#
|
27
|
+
# mail[:to].encoded #=> 'To: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
28
|
+
# mail[:to].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
29
|
+
# mail[:to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
30
|
+
# mail[:to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
31
|
+
class ToField < CommonAddressField #:nodoc:
|
32
|
+
NAME = 'To'
|
54
33
|
end
|
55
34
|
end
|