Class: Mail::Address
- Includes:
- Utilities
- Defined in:
- lib/mail/elements/address.rb
Constant Summary
Constants included from Constants
Constants::ASTERISK, Constants::ATOM_UNSAFE, Constants::B_VALUES, Constants::CAPITAL_M, Constants::COLON, Constants::CONTROL_CHAR, Constants::CR, Constants::CRLF, Constants::CR_ENCODED, Constants::EMPTY, Constants::ENCODED_VALUE, Constants::EQUAL_LF, Constants::FIELD_BODY, Constants::FIELD_LINE, Constants::FIELD_NAME, Constants::FIELD_PREFIX, Constants::FIELD_SPLIT, Constants::FWS, Constants::HEADER_LINE, Constants::HEADER_SPLIT, Constants::HYPHEN, Constants::LF, Constants::LF_ENCODED, Constants::NULL_SENDER, Constants::PHRASE_UNSAFE, Constants::QP_SAFE, Constants::QP_UNSAFE, Constants::Q_VALUES, Constants::SPACE, Constants::TEXT, Constants::TOKEN_UNSAFE, Constants::UNDERSCORE, Constants::WSP
Instance Method Summary collapse
-
#address ⇒ Object
Returns the address that is in the address itself.
-
#address=(value) ⇒ Object
Provides a way to assign an address to an already made Mail::Address object.
-
#comments ⇒ Object
Returns an array of comments that are in the email, or an empty array if there are no comments.
- #decoded ⇒ Object
-
#display_name ⇒ Object
Returns the display name of the email address passed in.
-
#display_name=(str) ⇒ Object
Provides a way to assign a display name to an already made Mail::Address object.
-
#domain ⇒ Object
Returns the domain part (the right hand side of the @ sign in the email address) of the address.
- #encoded ⇒ Object
-
#format ⇒ Object
Returns a correctly formatted address for the email going out.
- #group ⇒ Object
-
#initialize(value = nil) ⇒ Address
constructor
Mail::Address handles all email addresses in Mail.
-
#inspect ⇒ Object
Shows the Address object basic details, including the Address a = Address.new(‘Mikel (My email) <[email protected]>’) a.inspect #=> “#<Mail::Address:14184910 Address: |Mikel <[email protected]> (My email)| >”.
-
#local ⇒ Object
Returns the local part (the left hand side of the @ sign in the email address) of the address.
-
#name ⇒ Object
Sometimes an address will not have a display name, but might have the name as a comment field after the address.
-
#raw ⇒ Object
Returns the raw input of the passed in string, this is before it is passed by the parser.
-
#to_s ⇒ Object
Returns the format of the address, or returns nothing.
Methods included from Utilities
#atom_safe?, #bracket, #capitalize_field, #constantize, #dasherize, #dquote, #escape_paren, #map_lines, #map_with_index, #match_to_s, #paren, #quote_atom, #quote_phrase, #quote_token, #token_safe?, #unbracket, #underscoreize, #unparen, #unquote, #uri_escape, #uri_parser, #uri_unescape
Constructor Details
#initialize(value = nil) ⇒ Address
Mail::Address handles all email addresses in Mail. It takes an email address string and parses it, breaking it down into its component parts and allowing you to get the address, comments, display name, name, local part, domain part and fully formatted address.
Mail::Address requires a correctly formatted email address per RFC2822 or RFC822. It handles all obsolete versions including obsolete domain routing on the local part.
a = Address.new('Mikel Lindsaar (My email address) <[email protected]>')
a.format #=> 'Mikel Lindsaar <[email protected]> (My email address)'
a.address #=> '[email protected]'
a.display_name #=> 'Mikel Lindsaar'
a.local #=> 'mikel'
a.domain #=> 'test.lindsaar.net'
a.comments #=> ['My email address']
a.to_s #=> 'Mikel Lindsaar <[email protected]> (My email address)'
23 24 25 26 27 28 29 30 31 |
# File 'lib/mail/elements/address.rb', line 23 def initialize(value = nil) @output_type = :decode if value.nil? @parsed = false @data = nil else parse(value) end end |
Instance Method Details
#address ⇒ Object
Returns the address that is in the address itself. That is, the local@domain string, without any angle brackets or the like.
a = Address.new('Mikel Lindsaar (My email address) <[email protected]>')
a.address #=> '[email protected]'
64 65 66 67 |
# File 'lib/mail/elements/address.rb', line 64 def address parse unless @parsed domain ? "#{local}@#{domain}" : local end |
#address=(value) ⇒ Object
Provides a way to assign an address to an already made Mail::Address object.
a = Address.new
a.address = 'Mikel Lindsaar (My email address) <[email protected]>'
a.address #=> '[email protected]'
74 75 76 |
# File 'lib/mail/elements/address.rb', line 74 def address=(value) parse(value) end |
#comments ⇒ Object
Returns an array of comments that are in the email, or an empty array if there are no comments
a = Address.new('Mikel Lindsaar (My email address) <[email protected]>')
a.comments #=> ['My email address']
123 124 125 126 |
# File 'lib/mail/elements/address.rb', line 123 def comments parse unless @parsed get_comments.map { |c| c.squeeze(SPACE) } unless get_comments.empty? end |
#decoded ⇒ Object
160 161 162 163 |
# File 'lib/mail/elements/address.rb', line 160 def decoded @output_type = :decode format end |
#display_name ⇒ Object
Returns the display name of the email address passed in.
a = Address.new('Mikel Lindsaar (My email address) <[email protected]>')
a.display_name #=> 'Mikel Lindsaar'
82 83 84 85 86 |
# File 'lib/mail/elements/address.rb', line 82 def display_name parse unless @parsed @display_name ||= get_display_name Encodings.decode_encode(@display_name.to_s, @output_type) if @display_name end |
#display_name=(str) ⇒ Object
Provides a way to assign a display name to an already made Mail::Address object.
a = Address.new
a.address = '[email protected]'
a.display_name = 'Mikel Lindsaar'
a.format #=> 'Mikel Lindsaar <[email protected]>'
94 95 96 |
# File 'lib/mail/elements/address.rb', line 94 def display_name=( str ) @display_name = str end |
#domain ⇒ Object
Returns the domain part (the right hand side of the @ sign in the email address) of the address
a = Address.new('Mikel Lindsaar (My email address) <[email protected]>')
a.domain #=> 'test.lindsaar.net'
113 114 115 116 |
# File 'lib/mail/elements/address.rb', line 113 def domain parse unless @parsed strip_all_comments(get_domain) if get_domain end |
#encoded ⇒ Object
155 156 157 158 |
# File 'lib/mail/elements/address.rb', line 155 def encoded @output_type = :encode format end |
#format ⇒ Object
Returns a correctly formatted address for the email going out. If given an incorrectly formatted address as input, Mail::Address will do its best to format it correctly. This includes quoting display names as needed and putting the address in angle brackets etc.
a = Address.new('Mikel Lindsaar (My email address) <[email protected]>')
a.format #=> 'Mikel Lindsaar <[email protected]> (My email address)'
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/mail/elements/address.rb', line 46 def format parse unless @parsed if @data.nil? EMPTY elsif display_name [quote_phrase(display_name), "<#{address}>", format_comments].compact.join(SPACE) elsif address [address, format_comments].compact.join(SPACE) else raw end end |
#group ⇒ Object
165 166 167 |
# File 'lib/mail/elements/address.rb', line 165 def group @data && @data.group end |
#inspect ⇒ Object
Shows the Address object basic details, including the Address
a = Address.new('Mikel (My email) <[email protected]>')
a.inspect #=> "#<Mail::Address:14184910 Address: |Mikel <[email protected]> (My email)| >"
150 151 152 153 |
# File 'lib/mail/elements/address.rb', line 150 def inspect parse unless @parsed "#<#{self.class}:#{self.object_id} Address: |#{to_s}| >" end |
#local ⇒ Object
Returns the local part (the left hand side of the @ sign in the email address) of the address
a = Address.new('Mikel Lindsaar (My email address) <[email protected]>')
a.local #=> 'mikel'
103 104 105 106 |
# File 'lib/mail/elements/address.rb', line 103 def local parse unless @parsed "#{@data.obs_domain_list}#{get_local.strip}" if get_local end |
#name ⇒ Object
Sometimes an address will not have a display name, but might have the name as a comment field after the address. This returns that name if it exists.
a = Address.new('[email protected] (Mikel Lindsaar)')
a.name #=> 'Mikel Lindsaar'
133 134 135 136 |
# File 'lib/mail/elements/address.rb', line 133 def name parse unless @parsed get_name end |
#raw ⇒ Object
Returns the raw input of the passed in string, this is before it is passed by the parser.
35 36 37 |
# File 'lib/mail/elements/address.rb', line 35 def raw @data.raw end |
#to_s ⇒ Object
Returns the format of the address, or returns nothing
a = Address.new('Mikel Lindsaar (My email address) <[email protected]>')
a.format #=> 'Mikel Lindsaar <[email protected]> (My email address)'
142 143 144 145 |
# File 'lib/mail/elements/address.rb', line 142 def to_s parse unless @parsed format end |