mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Removing quoting and adding Mail 2.3.5
This commit is contained in:
parent
6d29f9789e
commit
8f22be04dc
3 changed files with 1 additions and 66 deletions
|
@ -20,6 +20,6 @@ Gem::Specification.new do |s|
|
||||||
s.has_rdoc = true
|
s.has_rdoc = true
|
||||||
|
|
||||||
s.add_dependency('actionpack', version)
|
s.add_dependency('actionpack', version)
|
||||||
s.add_dependency('mail', '~> 2.1.5.3')
|
s.add_dependency('mail', '~> 2.1.5.5')
|
||||||
s.add_dependency('text-format', '~> 1.0.0')
|
s.add_dependency('text-format', '~> 1.0.0')
|
||||||
end
|
end
|
||||||
|
|
|
@ -46,7 +46,6 @@ module ActionMailer
|
||||||
autoload :DeprecatedApi
|
autoload :DeprecatedApi
|
||||||
autoload :MailHelper
|
autoload :MailHelper
|
||||||
autoload :OldApi
|
autoload :OldApi
|
||||||
autoload :Quoting
|
|
||||||
autoload :TestCase
|
autoload :TestCase
|
||||||
autoload :TestHelper
|
autoload :TestHelper
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
module ActionMailer
|
|
||||||
module Quoting #:nodoc:
|
|
||||||
# TODO extract this into Mail itself.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Convert the given text into quoted printable format, with an instruction
|
|
||||||
# that the text be eventually interpreted in the given charset.
|
|
||||||
def quoted_printable(text, charset)
|
|
||||||
text = text.gsub( /[^a-z ]/i ) { quoted_printable_encode($&) }.
|
|
||||||
gsub( / /, "_" )
|
|
||||||
"=?#{charset}?Q?#{text}?="
|
|
||||||
end
|
|
||||||
|
|
||||||
# Convert the given character to quoted printable format, taking into
|
|
||||||
# account multi-byte characters (if executing with $KCODE="u", for instance)
|
|
||||||
def quoted_printable_encode(character)
|
|
||||||
result = ""
|
|
||||||
character.each_byte { |b| result << "=%02X" % b }
|
|
||||||
result
|
|
||||||
end
|
|
||||||
|
|
||||||
# A quick-and-dirty regexp for determining whether a string contains any
|
|
||||||
# characters that need escaping.
|
|
||||||
if !defined?(CHARS_NEEDING_QUOTING)
|
|
||||||
CHARS_NEEDING_QUOTING = Regexp.new('[\000-\011\013\014\016-\037\177-\377]', nil, 'n')
|
|
||||||
end
|
|
||||||
|
|
||||||
# Quote the given text if it contains any "illegal" characters
|
|
||||||
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
|
|
||||||
|
|
||||||
# Quote any of the given strings if they contain any "illegal" characters
|
|
||||||
def quote_any_if_necessary(charset, *args)
|
|
||||||
args.map { |v| quote_if_necessary(v, charset) }
|
|
||||||
end
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
def quote_address_if_necessary(address, charset)
|
|
||||||
if Array === address
|
|
||||||
address.map { |a| quote_address_if_necessary(a, charset) }.join(", ")
|
|
||||||
elsif address =~ /^(\S.*)\s+(<.*>)$/
|
|
||||||
address = $2
|
|
||||||
phrase = quote_if_necessary($1.gsub(/^['"](.*)['"]$/, '\1'), charset)
|
|
||||||
"\"#{phrase}\" #{address}"
|
|
||||||
else
|
|
||||||
address
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Quote any of the given addresses, if they need to be.
|
|
||||||
def quote_any_address_if_necessary(charset, *args)
|
|
||||||
args.map { |v| quote_address_if_necessary(v, charset) }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Reference in a new issue