nano-fast-tool 0.0.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 +7 -0
- data/mail-2.9.1/MIT-LICENSE +20 -0
- data/mail-2.9.1/README.md +771 -0
- data/mail-2.9.1/lib/mail/attachments_list.rb +109 -0
- data/mail-2.9.1/lib/mail/body.rb +305 -0
- data/mail-2.9.1/lib/mail/configuration.rb +78 -0
- data/mail-2.9.1/lib/mail/constants.rb +79 -0
- data/mail-2.9.1/lib/mail/elements/address.rb +258 -0
- data/mail-2.9.1/lib/mail/elements/address_list.rb +34 -0
- data/mail-2.9.1/lib/mail/elements/content_disposition_element.rb +20 -0
- data/mail-2.9.1/lib/mail/elements/content_location_element.rb +17 -0
- data/mail-2.9.1/lib/mail/elements/content_transfer_encoding_element.rb +13 -0
- data/mail-2.9.1/lib/mail/elements/content_type_element.rb +25 -0
- data/mail-2.9.1/lib/mail/elements/date_time_element.rb +15 -0
- data/mail-2.9.1/lib/mail/elements/envelope_from_element.rb +39 -0
- data/mail-2.9.1/lib/mail/elements/message_ids_element.rb +31 -0
- data/mail-2.9.1/lib/mail/elements/mime_version_element.rb +15 -0
- data/mail-2.9.1/lib/mail/elements/phrase_list.rb +19 -0
- data/mail-2.9.1/lib/mail/elements/received_element.rb +35 -0
- data/mail-2.9.1/lib/mail/elements.rb +15 -0
- data/mail-2.9.1/lib/mail/encodings/7bit.rb +27 -0
- data/mail-2.9.1/lib/mail/encodings/8bit.rb +18 -0
- data/mail-2.9.1/lib/mail/encodings/base64.rb +38 -0
- data/mail-2.9.1/lib/mail/encodings/binary.rb +13 -0
- data/mail-2.9.1/lib/mail/encodings/identity.rb +24 -0
- data/mail-2.9.1/lib/mail/encodings/quoted_printable.rb +45 -0
- data/mail-2.9.1/lib/mail/encodings/transfer_encoding.rb +77 -0
- data/mail-2.9.1/lib/mail/encodings/unix_to_unix.rb +20 -0
- data/mail-2.9.1/lib/mail/encodings.rb +314 -0
- data/mail-2.9.1/lib/mail/envelope.rb +28 -0
- data/mail-2.9.1/lib/mail/field.rb +313 -0
- data/mail-2.9.1/lib/mail/field_list.rb +87 -0
- data/mail-2.9.1/lib/mail/fields/bcc_field.rb +49 -0
- data/mail-2.9.1/lib/mail/fields/cc_field.rb +33 -0
- data/mail-2.9.1/lib/mail/fields/comments_field.rb +31 -0
- data/mail-2.9.1/lib/mail/fields/common_address_field.rb +162 -0
- data/mail-2.9.1/lib/mail/fields/common_date_field.rb +56 -0
- data/mail-2.9.1/lib/mail/fields/common_field.rb +77 -0
- data/mail-2.9.1/lib/mail/fields/common_message_id_field.rb +41 -0
- data/mail-2.9.1/lib/mail/fields/content_description_field.rb +12 -0
- data/mail-2.9.1/lib/mail/fields/content_disposition_field.rb +44 -0
- data/mail-2.9.1/lib/mail/fields/content_id_field.rb +35 -0
- data/mail-2.9.1/lib/mail/fields/content_location_field.rb +28 -0
- data/mail-2.9.1/lib/mail/fields/content_transfer_encoding_field.rb +44 -0
- data/mail-2.9.1/lib/mail/fields/content_type_field.rb +171 -0
- data/mail-2.9.1/lib/mail/fields/date_field.rb +28 -0
- data/mail-2.9.1/lib/mail/fields/from_field.rb +33 -0
- data/mail-2.9.1/lib/mail/fields/in_reply_to_field.rb +45 -0
- data/mail-2.9.1/lib/mail/fields/keywords_field.rb +30 -0
- data/mail-2.9.1/lib/mail/fields/message_id_field.rb +36 -0
- data/mail-2.9.1/lib/mail/fields/mime_version_field.rb +42 -0
- data/mail-2.9.1/lib/mail/fields/named_structured_field.rb +10 -0
- data/mail-2.9.1/lib/mail/fields/named_unstructured_field.rb +10 -0
- data/mail-2.9.1/lib/mail/fields/optional_field.rb +15 -0
- data/mail-2.9.1/lib/mail/fields/parameter_hash.rb +61 -0
- data/mail-2.9.1/lib/mail/fields/received_field.rb +61 -0
- data/mail-2.9.1/lib/mail/fields/references_field.rb +42 -0
- data/mail-2.9.1/lib/mail/fields/reply_to_field.rb +33 -0
- data/mail-2.9.1/lib/mail/fields/resent_bcc_field.rb +33 -0
- data/mail-2.9.1/lib/mail/fields/resent_cc_field.rb +33 -0
- data/mail-2.9.1/lib/mail/fields/resent_date_field.rb +10 -0
- data/mail-2.9.1/lib/mail/fields/resent_from_field.rb +33 -0
- data/mail-2.9.1/lib/mail/fields/resent_message_id_field.rb +10 -0
- data/mail-2.9.1/lib/mail/fields/resent_sender_field.rb +32 -0
- data/mail-2.9.1/lib/mail/fields/resent_to_field.rb +33 -0
- data/mail-2.9.1/lib/mail/fields/return_path_field.rb +60 -0
- data/mail-2.9.1/lib/mail/fields/sender_field.rb +45 -0
- data/mail-2.9.1/lib/mail/fields/structured_field.rb +24 -0
- data/mail-2.9.1/lib/mail/fields/subject_field.rb +14 -0
- data/mail-2.9.1/lib/mail/fields/to_field.rb +33 -0
- data/mail-2.9.1/lib/mail/fields/unstructured_field.rb +189 -0
- data/mail-2.9.1/lib/mail/fields.rb +45 -0
- data/mail-2.9.1/lib/mail/header.rb +237 -0
- data/mail-2.9.1/lib/mail/indifferent_hash.rb +147 -0
- data/mail-2.9.1/lib/mail/mail.rb +267 -0
- data/mail-2.9.1/lib/mail/matchers/attachment_matchers.rb +44 -0
- data/mail-2.9.1/lib/mail/matchers/has_sent_mail.rb +201 -0
- data/mail-2.9.1/lib/mail/message.rb +2159 -0
- data/mail-2.9.1/lib/mail/multibyte/chars.rb +318 -0
- data/mail-2.9.1/lib/mail/multibyte/unicode.rb +405 -0
- data/mail-2.9.1/lib/mail/multibyte/utils.rb +44 -0
- data/mail-2.9.1/lib/mail/multibyte.rb +82 -0
- data/mail-2.9.1/lib/mail/network/delivery_methods/exim.rb +50 -0
- data/mail-2.9.1/lib/mail/network/delivery_methods/file_delivery.rb +43 -0
- data/mail-2.9.1/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
- data/mail-2.9.1/lib/mail/network/delivery_methods/sendmail.rb +87 -0
- data/mail-2.9.1/lib/mail/network/delivery_methods/smtp.rb +200 -0
- data/mail-2.9.1/lib/mail/network/delivery_methods/smtp_connection.rb +57 -0
- data/mail-2.9.1/lib/mail/network/delivery_methods/test_mailer.rb +44 -0
- data/mail-2.9.1/lib/mail/network/retriever_methods/base.rb +64 -0
- data/mail-2.9.1/lib/mail/network/retriever_methods/imap.rb +190 -0
- data/mail-2.9.1/lib/mail/network/retriever_methods/pop3.rb +143 -0
- data/mail-2.9.1/lib/mail/network/retriever_methods/test_retriever.rb +45 -0
- data/mail-2.9.1/lib/mail/network.rb +16 -0
- data/mail-2.9.1/lib/mail/parser_tools.rb +15 -0
- data/mail-2.9.1/lib/mail/parsers/address_lists_parser.rb +33245 -0
- data/mail-2.9.1/lib/mail/parsers/address_lists_parser.rl +183 -0
- data/mail-2.9.1/lib/mail/parsers/content_disposition_parser.rb +904 -0
- data/mail-2.9.1/lib/mail/parsers/content_disposition_parser.rl +93 -0
- data/mail-2.9.1/lib/mail/parsers/content_location_parser.rb +825 -0
- data/mail-2.9.1/lib/mail/parsers/content_location_parser.rl +82 -0
- data/mail-2.9.1/lib/mail/parsers/content_transfer_encoding_parser.rb +525 -0
- data/mail-2.9.1/lib/mail/parsers/content_transfer_encoding_parser.rl +75 -0
- data/mail-2.9.1/lib/mail/parsers/content_type_parser.rb +1051 -0
- data/mail-2.9.1/lib/mail/parsers/content_type_parser.rl +94 -0
- data/mail-2.9.1/lib/mail/parsers/date_time_parser.rb +894 -0
- data/mail-2.9.1/lib/mail/parsers/date_time_parser.rl +73 -0
- data/mail-2.9.1/lib/mail/parsers/envelope_from_parser.rb +3678 -0
- data/mail-2.9.1/lib/mail/parsers/envelope_from_parser.rl +93 -0
- data/mail-2.9.1/lib/mail/parsers/message_ids_parser.rb +5164 -0
- data/mail-2.9.1/lib/mail/parsers/message_ids_parser.rl +97 -0
- data/mail-2.9.1/lib/mail/parsers/mime_version_parser.rb +516 -0
- data/mail-2.9.1/lib/mail/parsers/mime_version_parser.rl +72 -0
- data/mail-2.9.1/lib/mail/parsers/phrase_lists_parser.rb +887 -0
- data/mail-2.9.1/lib/mail/parsers/phrase_lists_parser.rl +94 -0
- data/mail-2.9.1/lib/mail/parsers/received_parser.rb +8785 -0
- data/mail-2.9.1/lib/mail/parsers/received_parser.rl +95 -0
- data/mail-2.9.1/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
- data/mail-2.9.1/lib/mail/parsers/rfc2045_content_type.rl +25 -0
- data/mail-2.9.1/lib/mail/parsers/rfc2045_mime.rl +16 -0
- data/mail-2.9.1/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
- data/mail-2.9.1/lib/mail/parsers/rfc3629_utf8.rl +19 -0
- data/mail-2.9.1/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
- data/mail-2.9.1/lib/mail/parsers/rfc5322.rl +74 -0
- data/mail-2.9.1/lib/mail/parsers/rfc5322_address.rl +72 -0
- data/mail-2.9.1/lib/mail/parsers/rfc5322_date_time.rl +37 -0
- data/mail-2.9.1/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
- data/mail-2.9.1/lib/mail/parsers.rb +13 -0
- data/mail-2.9.1/lib/mail/part.rb +119 -0
- data/mail-2.9.1/lib/mail/parts_list.rb +131 -0
- data/mail-2.9.1/lib/mail/smtp_envelope.rb +57 -0
- data/mail-2.9.1/lib/mail/utilities.rb +576 -0
- data/mail-2.9.1/lib/mail/values/unicode_tables.dat +0 -0
- data/mail-2.9.1/lib/mail/version.rb +17 -0
- data/mail-2.9.1/lib/mail/yaml.rb +30 -0
- data/mail-2.9.1/lib/mail.rb +65 -0
- data/nano-fast-tool.gemspec +12 -0
- metadata +177 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
require 'mail/utilities'
|
|
4
|
+
|
|
5
|
+
module Mail
|
|
6
|
+
class MimeVersionField < NamedStructuredField #:nodoc:
|
|
7
|
+
NAME = 'MIME-Version'
|
|
8
|
+
|
|
9
|
+
def self.singular?
|
|
10
|
+
true
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def initialize(value = nil, charset = nil)
|
|
14
|
+
value = '1.0' if Utilities.blank?(value)
|
|
15
|
+
super value, charset
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def element
|
|
19
|
+
@element ||= Mail::MimeVersionElement.new(value)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def version
|
|
23
|
+
"#{element.major}.#{element.minor}"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def major
|
|
27
|
+
element.major.to_i
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def minor
|
|
31
|
+
element.minor.to_i
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def encoded
|
|
35
|
+
"#{name}: #{version}\r\n"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def decoded
|
|
39
|
+
version
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# The field names of any optional-field MUST NOT be identical to any
|
|
6
|
+
# field name specified elsewhere in this standard.
|
|
7
|
+
#
|
|
8
|
+
# optional-field = field-name ":" unstructured CRLF
|
|
9
|
+
class OptionalField < UnstructuredField #:nodoc:
|
|
10
|
+
private
|
|
11
|
+
def do_encode
|
|
12
|
+
"#{wrapped_value}\r\n"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
require 'mail/constants'
|
|
4
|
+
require 'mail/indifferent_hash'
|
|
5
|
+
require 'mail/encodings'
|
|
6
|
+
|
|
7
|
+
module Mail
|
|
8
|
+
# ParameterHash is an intelligent Hash that allows you to add
|
|
9
|
+
# parameter values including the MIME extension paramaters that
|
|
10
|
+
# have the name*0="blah", name*1="bleh" keys, and will just return
|
|
11
|
+
# a single key called name="blahbleh" and do any required un-encoding
|
|
12
|
+
# to make that happen
|
|
13
|
+
#
|
|
14
|
+
# Parameters are defined in RFC2045. Split keys are in RFC2231.
|
|
15
|
+
class ParameterHash < IndifferentHash #:nodoc:
|
|
16
|
+
def [](key_name)
|
|
17
|
+
key_pattern = Regexp.escape(key_name.to_s)
|
|
18
|
+
pairs = []
|
|
19
|
+
exact = nil
|
|
20
|
+
|
|
21
|
+
each do |k,v|
|
|
22
|
+
if k =~ /^#{key_pattern}(\*|$)/i
|
|
23
|
+
if $1 == Constants::ASTERISK
|
|
24
|
+
pairs << [k, v]
|
|
25
|
+
else
|
|
26
|
+
exact = k
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
if pairs.empty? # Just dealing with a single value pair
|
|
32
|
+
super(exact || key_name)
|
|
33
|
+
else # Dealing with a multiple value pair or a single encoded value pair
|
|
34
|
+
string = pairs.sort { |a,b| a.first.to_s <=> b.first.to_s }.map { |v| v.last }.join('')
|
|
35
|
+
if mt = string.match(/([\w\-]+)?'(\w\w)?'(.*)/)
|
|
36
|
+
string = mt[3]
|
|
37
|
+
encoding = mt[1]
|
|
38
|
+
else
|
|
39
|
+
encoding = nil
|
|
40
|
+
end
|
|
41
|
+
Mail::Encodings.param_decode(string, encoding)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def encoded
|
|
46
|
+
map.sort_by { |a| a.first.to_s }.map! do |key_name, value|
|
|
47
|
+
unless value.ascii_only?
|
|
48
|
+
value = Mail::Encodings.param_encode(value)
|
|
49
|
+
key_name = "#{key_name}*"
|
|
50
|
+
end
|
|
51
|
+
%Q{#{key_name}=#{Utilities.quote_token(value)}}
|
|
52
|
+
end.join(";\r\n\s")
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def decoded
|
|
56
|
+
map.sort_by { |a| a.first.to_s }.map! do |key_name, value|
|
|
57
|
+
%Q{#{key_name}=#{Utilities.quote_token(value)}}
|
|
58
|
+
end.join("; ")
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# trace = [return]
|
|
6
|
+
# 1*received
|
|
7
|
+
#
|
|
8
|
+
# return = "Return-Path:" path CRLF
|
|
9
|
+
#
|
|
10
|
+
# path = ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) /
|
|
11
|
+
# obs-path
|
|
12
|
+
#
|
|
13
|
+
# received = "Received:" name-val-list ";" date-time CRLF
|
|
14
|
+
#
|
|
15
|
+
# name-val-list = [CFWS] [name-val-pair *(CFWS name-val-pair)]
|
|
16
|
+
#
|
|
17
|
+
# name-val-pair = item-name CFWS item-value
|
|
18
|
+
#
|
|
19
|
+
# item-name = ALPHA *(["-"] (ALPHA / DIGIT))
|
|
20
|
+
#
|
|
21
|
+
# item-value = 1*angle-addr / addr-spec /
|
|
22
|
+
# atom / domain / msg-id
|
|
23
|
+
class ReceivedField < NamedStructuredField #:nodoc:
|
|
24
|
+
NAME = 'Received'
|
|
25
|
+
|
|
26
|
+
def element
|
|
27
|
+
@element ||= Mail::ReceivedElement.new(value)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def date_time
|
|
31
|
+
@datetime ||= element.date_time
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def info
|
|
35
|
+
element.info
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def formatted_date
|
|
39
|
+
if date_time.respond_to? :strftime and date_time.respond_to? :zone
|
|
40
|
+
date_time.strftime("%a, %d %b %Y %H:%M:%S ") + date_time.zone.delete(':')
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
def do_encode
|
|
46
|
+
if Utilities.blank?(value)
|
|
47
|
+
"#{name}: \r\n"
|
|
48
|
+
else
|
|
49
|
+
"#{name}: #{info}; #{formatted_date}\r\n"
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def do_decode
|
|
54
|
+
if Utilities.blank?(value)
|
|
55
|
+
""
|
|
56
|
+
else
|
|
57
|
+
"#{info}; #{formatted_date}"
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# = References Field
|
|
6
|
+
#
|
|
7
|
+
# The References field inherits references StructuredField and handles the References: header
|
|
8
|
+
# field in the email.
|
|
9
|
+
#
|
|
10
|
+
# Sending references to a mail message will instantiate a Mail::Field object that
|
|
11
|
+
# has a ReferencesField as its field type. This includes all Mail::CommonAddress
|
|
12
|
+
# module instance metods.
|
|
13
|
+
#
|
|
14
|
+
# Note that, the #message_ids method will return an array of message IDs without the
|
|
15
|
+
# enclosing angle brackets which per RFC are not syntactically part of the message id.
|
|
16
|
+
#
|
|
17
|
+
# Only one References field can appear in a header, though it can have multiple
|
|
18
|
+
# Message IDs.
|
|
19
|
+
#
|
|
20
|
+
# == Examples:
|
|
21
|
+
#
|
|
22
|
+
# mail = Mail.new
|
|
23
|
+
# mail.references = '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom>'
|
|
24
|
+
# mail.references #=> '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom>'
|
|
25
|
+
# mail[:references] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReferencesField:0x180e1c4
|
|
26
|
+
# mail['references'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReferencesField:0x180e1c4
|
|
27
|
+
# mail['References'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReferencesField:0x180e1c4
|
|
28
|
+
#
|
|
29
|
+
# mail[:references].message_ids #=> ['F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@test.me.dom']
|
|
30
|
+
class ReferencesField < CommonMessageIdField #:nodoc:
|
|
31
|
+
NAME = 'References'
|
|
32
|
+
|
|
33
|
+
def self.singular?
|
|
34
|
+
true
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def initialize(value = nil, charset = nil)
|
|
38
|
+
value = value.join("\r\n\s") if value.is_a?(Array)
|
|
39
|
+
super value, charset
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# = Reply-To Field
|
|
6
|
+
#
|
|
7
|
+
# The Reply-To field inherits reply-to StructuredField and handles the Reply-To: header
|
|
8
|
+
# field in the email.
|
|
9
|
+
#
|
|
10
|
+
# Sending reply_to to a mail message will instantiate a Mail::Field object that
|
|
11
|
+
# has a ReplyToField as its field type. This includes all Mail::CommonAddress
|
|
12
|
+
# module instance metods.
|
|
13
|
+
#
|
|
14
|
+
# Only one Reply-To field can appear in a header, though it can have multiple
|
|
15
|
+
# addresses and groups of addresses.
|
|
16
|
+
#
|
|
17
|
+
# == Examples:
|
|
18
|
+
#
|
|
19
|
+
# mail = Mail.new
|
|
20
|
+
# mail.reply_to = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
21
|
+
# mail.reply_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
22
|
+
# mail[:reply_to] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReplyToField:0x180e1c4
|
|
23
|
+
# mail['reply-to'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReplyToField:0x180e1c4
|
|
24
|
+
# mail['Reply-To'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ReplyToField:0x180e1c4
|
|
25
|
+
#
|
|
26
|
+
# mail[:reply_to].encoded #=> 'Reply-To: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
|
27
|
+
# mail[:reply_to].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
28
|
+
# mail[:reply_to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
29
|
+
# mail[:reply_to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
|
30
|
+
class ReplyToField < CommonAddressField #:nodoc:
|
|
31
|
+
NAME = 'Reply-To'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# = Resent-Bcc Field
|
|
6
|
+
#
|
|
7
|
+
# The Resent-Bcc field inherits resent-bcc StructuredField and handles the
|
|
8
|
+
# Resent-Bcc: header field in the email.
|
|
9
|
+
#
|
|
10
|
+
# Sending resent_bcc to a mail message will instantiate a Mail::Field object that
|
|
11
|
+
# has a ResentBccField as its field type. This includes all Mail::CommonAddress
|
|
12
|
+
# module instance metods.
|
|
13
|
+
#
|
|
14
|
+
# Only one Resent-Bcc field can appear in a header, though it can have multiple
|
|
15
|
+
# addresses and groups of addresses.
|
|
16
|
+
#
|
|
17
|
+
# == Examples:
|
|
18
|
+
#
|
|
19
|
+
# mail = Mail.new
|
|
20
|
+
# mail.resent_bcc = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
21
|
+
# mail.resent_bcc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
22
|
+
# mail[:resent_bcc] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentBccField:0x180e1c4
|
|
23
|
+
# mail['resent-bcc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentBccField:0x180e1c4
|
|
24
|
+
# mail['Resent-Bcc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentBccField:0x180e1c4
|
|
25
|
+
#
|
|
26
|
+
# mail[:resent_bcc].encoded #=> 'Resent-Bcc: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
|
27
|
+
# mail[:resent_bcc].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
28
|
+
# mail[:resent_bcc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
29
|
+
# mail[:resent_bcc].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
|
30
|
+
class ResentBccField < CommonAddressField #:nodoc:
|
|
31
|
+
NAME = 'Resent-Bcc'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# = Resent-Cc Field
|
|
6
|
+
#
|
|
7
|
+
# The Resent-Cc field inherits resent-cc StructuredField and handles the Resent-Cc: header
|
|
8
|
+
# field in the email.
|
|
9
|
+
#
|
|
10
|
+
# Sending resent_cc to a mail message will instantiate a Mail::Field object that
|
|
11
|
+
# has a ResentCcField as its field type. This includes all Mail::CommonAddress
|
|
12
|
+
# module instance metods.
|
|
13
|
+
#
|
|
14
|
+
# Only one Resent-Cc field can appear in a header, though it can have multiple
|
|
15
|
+
# addresses and groups of addresses.
|
|
16
|
+
#
|
|
17
|
+
# == Examples:
|
|
18
|
+
#
|
|
19
|
+
# mail = Mail.new
|
|
20
|
+
# mail.resent_cc = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
21
|
+
# mail.resent_cc #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
22
|
+
# mail[:resent_cc] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentCcField:0x180e1c4
|
|
23
|
+
# mail['resent-cc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentCcField:0x180e1c4
|
|
24
|
+
# mail['Resent-Cc'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentCcField:0x180e1c4
|
|
25
|
+
#
|
|
26
|
+
# mail[:resent_cc].encoded #=> 'Resent-Cc: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
|
27
|
+
# mail[:resent_cc].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
28
|
+
# mail[:resent_cc].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
29
|
+
# mail[:resent_cc].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
|
30
|
+
class ResentCcField < CommonAddressField #:nodoc:
|
|
31
|
+
NAME = 'Resent-Cc'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# = Resent-From Field
|
|
6
|
+
#
|
|
7
|
+
# The Resent-From field inherits resent-from StructuredField and handles the Resent-From: header
|
|
8
|
+
# field in the email.
|
|
9
|
+
#
|
|
10
|
+
# Sending resent_from to a mail message will instantiate a Mail::Field object that
|
|
11
|
+
# has a ResentFromField as its field type. This includes all Mail::CommonAddress
|
|
12
|
+
# module instance metods.
|
|
13
|
+
#
|
|
14
|
+
# Only one Resent-From field can appear in a header, though it can have multiple
|
|
15
|
+
# addresses and groups of addresses.
|
|
16
|
+
#
|
|
17
|
+
# == Examples:
|
|
18
|
+
#
|
|
19
|
+
# mail = Mail.new
|
|
20
|
+
# mail.resent_from = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
21
|
+
# mail.resent_from #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
22
|
+
# mail[:resent_from] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentFromField:0x180e1c4
|
|
23
|
+
# mail['resent-from'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentFromField:0x180e1c4
|
|
24
|
+
# mail['Resent-From'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentFromField:0x180e1c4
|
|
25
|
+
#
|
|
26
|
+
# mail[:resent_from].encoded #=> 'Resent-From: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
|
27
|
+
# mail[:resent_from].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
28
|
+
# mail[:resent_from].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
29
|
+
# mail[:resent_from].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
|
30
|
+
class ResentFromField < CommonAddressField #:nodoc:
|
|
31
|
+
NAME = 'Resent-From'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# = Resent-Sender Field
|
|
6
|
+
#
|
|
7
|
+
# The Resent-Sender field inherits resent-sender StructuredField and handles the Resent-Sender: header
|
|
8
|
+
# field in the email.
|
|
9
|
+
#
|
|
10
|
+
# Sending resent_sender to a mail message will instantiate a Mail::Field object that
|
|
11
|
+
# has a ResentSenderField as its field type. This includes all Mail::CommonAddress
|
|
12
|
+
# module instance metods.
|
|
13
|
+
#
|
|
14
|
+
# Only one Resent-Sender field can appear in a header, though it can have multiple
|
|
15
|
+
# addresses and groups of addresses.
|
|
16
|
+
#
|
|
17
|
+
# == Examples:
|
|
18
|
+
#
|
|
19
|
+
# mail = Mail.new
|
|
20
|
+
# mail.resent_sender = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
21
|
+
# mail.resent_sender #=> ['mikel@test.lindsaar.net']
|
|
22
|
+
# mail[:resent_sender] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
|
|
23
|
+
# mail['resent-sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
|
|
24
|
+
# mail['Resent-Sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentSenderField:0x180e1c4
|
|
25
|
+
#
|
|
26
|
+
# mail.resent_sender.to_s #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
27
|
+
# mail.resent_sender.addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
28
|
+
# mail.resent_sender.formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
|
29
|
+
class ResentSenderField < CommonAddressField #:nodoc:
|
|
30
|
+
NAME = 'Resent-Sender'
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# = Resent-To Field
|
|
6
|
+
#
|
|
7
|
+
# The Resent-To field inherits resent-to StructuredField and handles the Resent-To: header
|
|
8
|
+
# field in the email.
|
|
9
|
+
#
|
|
10
|
+
# Sending resent_to to a mail message will instantiate a Mail::Field object that
|
|
11
|
+
# has a ResentToField as its field type. This includes all Mail::CommonAddress
|
|
12
|
+
# module instance metods.
|
|
13
|
+
#
|
|
14
|
+
# Only one Resent-To field can appear in a header, though it can have multiple
|
|
15
|
+
# addresses and groups of addresses.
|
|
16
|
+
#
|
|
17
|
+
# == Examples:
|
|
18
|
+
#
|
|
19
|
+
# mail = Mail.new
|
|
20
|
+
# mail.resent_to = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
21
|
+
# mail.resent_to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
22
|
+
# mail[:resent_to] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
|
|
23
|
+
# mail['resent-to'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
|
|
24
|
+
# mail['Resent-To'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ResentToField:0x180e1c4
|
|
25
|
+
#
|
|
26
|
+
# mail[:resent_to].encoded #=> 'Resent-To: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
|
27
|
+
# mail[:resent_to].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
28
|
+
# mail[:resent_to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
29
|
+
# mail[:resent_to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
|
30
|
+
class ResentToField < CommonAddressField #:nodoc:
|
|
31
|
+
NAME = 'Resent-To'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# 4.4.3. REPLY-TO / RESENT-REPLY-TO
|
|
6
|
+
#
|
|
7
|
+
# Note: The "Return-Path" field is added by the mail transport
|
|
8
|
+
# service, at the time of final deliver. It is intended
|
|
9
|
+
# to identify a path back to the orginator of the mes-
|
|
10
|
+
# sage. The "Reply-To" field is added by the message
|
|
11
|
+
# originator and is intended to direct replies.
|
|
12
|
+
#
|
|
13
|
+
# trace = [return]
|
|
14
|
+
# 1*received
|
|
15
|
+
#
|
|
16
|
+
# return = "Return-Path:" path CRLF
|
|
17
|
+
#
|
|
18
|
+
# path = ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) /
|
|
19
|
+
# obs-path
|
|
20
|
+
#
|
|
21
|
+
# received = "Received:" name-val-list ";" date-time CRLF
|
|
22
|
+
#
|
|
23
|
+
# name-val-list = [CFWS] [name-val-pair *(CFWS name-val-pair)]
|
|
24
|
+
#
|
|
25
|
+
# name-val-pair = item-name CFWS item-value
|
|
26
|
+
#
|
|
27
|
+
# item-name = ALPHA *(["-"] (ALPHA / DIGIT))
|
|
28
|
+
#
|
|
29
|
+
# item-value = 1*angle-addr / addr-spec /
|
|
30
|
+
# atom / domain / msg-id
|
|
31
|
+
#
|
|
32
|
+
class ReturnPathField < CommonAddressField #:nodoc:
|
|
33
|
+
NAME = 'Return-Path'
|
|
34
|
+
|
|
35
|
+
def self.singular?
|
|
36
|
+
true
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def initialize(value = nil, charset = nil)
|
|
40
|
+
if value == '<>'
|
|
41
|
+
super nil, charset
|
|
42
|
+
else
|
|
43
|
+
super
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def default
|
|
48
|
+
address
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
private
|
|
52
|
+
def do_encode
|
|
53
|
+
"#{name}: <#{address}>\r\n"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def do_decode
|
|
57
|
+
address
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# = Sender Field
|
|
6
|
+
#
|
|
7
|
+
# The Sender field inherits sender StructuredField and handles the Sender: header
|
|
8
|
+
# field in the email.
|
|
9
|
+
#
|
|
10
|
+
# Sending sender to a mail message will instantiate a Mail::Field object that
|
|
11
|
+
# has a SenderField as its field type. This includes all Mail::CommonAddress
|
|
12
|
+
# module instance metods.
|
|
13
|
+
#
|
|
14
|
+
# Only one Sender field can appear in a header, though it can have multiple
|
|
15
|
+
# addresses and groups of addresses.
|
|
16
|
+
#
|
|
17
|
+
# == Examples:
|
|
18
|
+
#
|
|
19
|
+
# mail = Mail.new
|
|
20
|
+
# mail.sender = 'Mikel Lindsaar <mikel@test.lindsaar.net>'
|
|
21
|
+
# mail.sender #=> 'mikel@test.lindsaar.net'
|
|
22
|
+
# mail[:sender] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
|
|
23
|
+
# mail['sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
|
|
24
|
+
# mail['Sender'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::SenderField:0x180e1c4
|
|
25
|
+
#
|
|
26
|
+
# mail[:sender].encoded #=> "Sender: Mikel Lindsaar <mikel@test.lindsaar.net>\r\n"
|
|
27
|
+
# mail[:sender].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>'
|
|
28
|
+
# mail[:sender].addresses #=> ['mikel@test.lindsaar.net']
|
|
29
|
+
# mail[:sender].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>']
|
|
30
|
+
class SenderField < CommonAddressField #:nodoc:
|
|
31
|
+
NAME = 'Sender'
|
|
32
|
+
|
|
33
|
+
def self.singular?
|
|
34
|
+
true
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def default
|
|
38
|
+
address
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def addresses
|
|
42
|
+
Array(super.first)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# Provides access to a structured header field
|
|
6
|
+
#
|
|
7
|
+
# ===Per RFC 2822:
|
|
8
|
+
# 2.2.2. Structured Header Field Bodies
|
|
9
|
+
#
|
|
10
|
+
# Some field bodies in this standard have specific syntactical
|
|
11
|
+
# structure more restrictive than the unstructured field bodies
|
|
12
|
+
# described above. These are referred to as "structured" field bodies.
|
|
13
|
+
# Structured field bodies are sequences of specific lexical tokens as
|
|
14
|
+
# described in sections 3 and 4 of this standard. Many of these tokens
|
|
15
|
+
# are allowed (according to their syntax) to be introduced or end with
|
|
16
|
+
# comments (as described in section 3.2.3) as well as the space (SP,
|
|
17
|
+
# ASCII value 32) and horizontal tab (HTAB, ASCII value 9) characters
|
|
18
|
+
# (together known as the white space characters, WSP), and those WSP
|
|
19
|
+
# characters are subject to header "folding" and "unfolding" as
|
|
20
|
+
# described in section 2.2.3. Semantic analysis of structured field
|
|
21
|
+
# bodies is given along with their syntax.
|
|
22
|
+
class StructuredField < CommonField #:nodoc:
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Mail
|
|
5
|
+
# = To Field
|
|
6
|
+
#
|
|
7
|
+
# The To field inherits to StructuredField and handles the To: header
|
|
8
|
+
# field in the email.
|
|
9
|
+
#
|
|
10
|
+
# Sending to to a mail message will instantiate a Mail::Field object that
|
|
11
|
+
# has a ToField as its field type. This includes all Mail::CommonAddress
|
|
12
|
+
# module instance metods.
|
|
13
|
+
#
|
|
14
|
+
# Only one To field can appear in a header, though it can have multiple
|
|
15
|
+
# addresses and groups of addresses.
|
|
16
|
+
#
|
|
17
|
+
# == Examples:
|
|
18
|
+
#
|
|
19
|
+
# mail = Mail.new
|
|
20
|
+
# mail.to = 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
21
|
+
# mail.to #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
22
|
+
# mail[:to] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ToField:0x180e1c4
|
|
23
|
+
# mail['to'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ToField:0x180e1c4
|
|
24
|
+
# mail['To'] #=> '#<Mail::Field:0x180e5e8 @field=#<Mail::ToField:0x180e1c4
|
|
25
|
+
#
|
|
26
|
+
# mail[:to].encoded #=> 'To: Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net\r\n'
|
|
27
|
+
# mail[:to].decoded #=> 'Mikel Lindsaar <mikel@test.lindsaar.net>, ada@test.lindsaar.net'
|
|
28
|
+
# mail[:to].addresses #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
|
|
29
|
+
# mail[:to].formatted #=> ['Mikel Lindsaar <mikel@test.lindsaar.net>', 'ada@test.lindsaar.net']
|
|
30
|
+
class ToField < CommonAddressField #:nodoc:
|
|
31
|
+
NAME = 'To'
|
|
32
|
+
end
|
|
33
|
+
end
|