Module: ActionMailer::Quoting
Overview
:nodoc:
Constant Summary collapse
- CHARS_NEEDING_QUOTING =
/[\000-\011\013\014\016-\037\177-\377]/
Instance Method Summary collapse
-
#quote_address_if_necessary(address, charset) ⇒ Object
Quote the given address if it needs to be.
-
#quote_any_address_if_necessary(charset, *args) ⇒ Object
Quote any of the given addresses, if they need to be.
-
#quote_any_if_necessary(charset, *args) ⇒ Object
Quote any of the given strings if they contain any “illegal” characters.
-
#quote_if_necessary(text, charset) ⇒ Object
Quote the given text if it contains any “illegal” characters.
-
#quoted_printable(text, charset) ⇒ Object
Convert the given text into quoted printable format, with an instruction that the text be eventually interpreted in the given charset.
-
#quoted_printable_encode(character) ⇒ Object
Convert the given character to quoted printable format, taking into account multi-byte characters (if executing with $KCODE=“u”, for instance).
Instance Method Details
#quote_address_if_necessary(address, charset) ⇒ Object
Quote the given address if it needs to be. The address may be a regular email address, or it can be a phrase followed by an address in brackets. The phrase is the only part that will be quoted, and only if it needs to be. This allows extended characters to be used in the “to”, “from”, “cc”, “bcc” and “reply-to” headers.
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/action_mailer/quoting.rb', line 45 def quote_address_if_necessary(address, charset) if Array === address address.map { |a| quote_address_if_necessary(a, charset) } elsif address =~ /^(\S.*)\s+(<.*>)$/ address = $2 phrase = quote_if_necessary($1.gsub(/^['"](.*)['"]$/, '\1'), charset) "\"#{phrase}\" #{address}" else address end end |
#quote_any_address_if_necessary(charset, *args) ⇒ Object
Quote any of the given addresses, if they need to be.
58 59 60 |
# File 'lib/action_mailer/quoting.rb', line 58 def quote_any_address_if_necessary(charset, *args) args.map { |v| quote_address_if_necessary(v, charset) } end |
#quote_any_if_necessary(charset, *args) ⇒ Object
Quote any of the given strings if they contain any “illegal” characters
36 37 38 |
# File 'lib/action_mailer/quoting.rb', line 36 def quote_any_if_necessary(charset, *args) args.map { |v| quote_if_necessary(v, charset) } end |
#quote_if_necessary(text, charset) ⇒ Object
Quote the given text if it contains any “illegal” characters
27 28 29 30 31 32 33 |
# File 'lib/action_mailer/quoting.rb', line 27 def quote_if_necessary(text, charset) text = text.dup.force_encoding(Encoding::ASCII_8BIT) if text.respond_to?(:force_encoding) (text =~ CHARS_NEEDING_QUOTING) ? quoted_printable(text, charset) : text end |
#quoted_printable(text, charset) ⇒ Object
Convert the given text into quoted printable format, with an instruction that the text be eventually interpreted in the given charset.
6 7 8 9 10 |
# File 'lib/action_mailer/quoting.rb', line 6 def quoted_printable(text, charset) text = text.gsub( /[^a-z ]/i ) { quoted_printable_encode($&) }. gsub( / /, "_" ) "=?#{charset}?Q?#{text}?=" end |
#quoted_printable_encode(character) ⇒ Object
Convert the given character to quoted printable format, taking into account multi-byte characters (if executing with $KCODE=“u”, for instance)
14 15 16 17 18 |
# File 'lib/action_mailer/quoting.rb', line 14 def quoted_printable_encode(character) result = "" character.each_byte { |b| result << "=%02X" % b } result end |