mail.rb

facade.rb

Methods
#
A
B
C
D
E
F
H
I
K
L
M
N
O
P
Q
R
S
T
U
V
W
Included Modules
Constants
ALLOW_MULTIPLE = { 'received' => true, 'resent-date' => true, 'resent-from' => true, 'resent-sender' => true, 'resent-to' => true, 'resent-cc' => true, 'resent-bcc' => true, 'resent-message-id' => true, 'comments' => true, 'keywords' => true }
 

header

USE_ARRAY = ALLOW_MULTIPLE
 
FIELD_ORDER = %w( return-path received resent-date resent-from resent-sender resent-to resent-cc resent-bcc resent-message-id date from sender reply-to to cc bcc message-id in-reply-to references subject comments keywords mime-version content-type content-transfer-encoding content-disposition content-description )
 
NOSEND_FIELDS = %w( received bcc )
 
Attributes
[R] port
Class Public methods
boundary()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb, line 127
def Mail.boundary
  ::TMail.new_boundary
end
load( fname )
Also aliased as: load_from, loadfrom
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 46
def load( fname )
  new(FilePort.new(fname))
end
load_from( fname )
loadfrom( fname )
msgid()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb, line 131
def Mail.msgid
  ::TMail.new_message_id
end
new( port = nil, conf = DEFAULT_CONFIG )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 58
def initialize( port = nil, conf = DEFAULT_CONFIG )
  @port = port || StringPort.new
  @config = Config.to_config(conf)

  @header      = {}
  @body_port   = nil
  @body_parsed = false
  @epilogue    = ''
  @parts       = []

  @port.ropen {|f|
      parse_header f
      parse_body f unless @port.reproducible?
  }
end
parse( str )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 53
def parse( str )
  new(StringPort.new(str))
end
Instance Public methods
[]( key )
Also aliased as: fetch
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 163
def []( key )
  @header[key.downcase]
end
[]=( key, val )
Also aliased as: store
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 173
def []=( key, val )
  dkey = key.downcase

  if val.nil?
    @header.delete dkey
    return nil
  end

  case val
  when String
    header = new_hf(key, val)
  when HeaderField
    ;
  when Array
    ALLOW_MULTIPLE.include? dkey or
            raise ArgumentError, "#{key}: Header must not be multiple"
    @header[dkey] = val
    return val
  else
    header = new_hf(key, val.to_s)
  end
  if ALLOW_MULTIPLE.include? dkey
    (@header[dkey] ||= []).push header
  else
    @header[dkey] = header
  end

  val
end
accept( strategy )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 93
def accept( strategy )
  with_multipart_encoding(strategy) {
      ordered_each do |name, field|
        next if field.empty?
        strategy.header_name canonical(name)
        field.accept strategy
        strategy.puts
      end
      strategy.puts
      body_port().ropen {|r|
          strategy.write r.read
      }
  }
end
add_date()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 86
def add_date
  self.date = Time.now
end
add_message_id( fqdn = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 82
def add_message_id( fqdn = nil )
  self.message_id = ::TMail::new_message_id(fqdn)
end
attachment?(part)
# File rails/actionmailer/lib/action_mailer/vendor/tmail/attachments.rb, line 13
def attachment?(part)
  (part['content-disposition'] && part['content-disposition'].disposition == "attachment") ||
  part.header['content-type'].main_type != "text"
end
attachments()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/attachments.rb, line 18
def attachments
  if multipart?
    parts.collect { |part| 
      if attachment?(part)
        content   = part.body # unquoted automatically by TMail#body
        file_name = (part['content-location'] &&
                      part['content-location'].body) ||
                    part.sub_header("content-type", "name") ||
                    part.sub_header("content-disposition", "filename")
        
        next if file_name.blank? || content.blank?
        
        attachment = Attachment.new(content)
        attachment.original_filename = file_name.strip
        attachment.content_type = part.content_type
        attachment
      end
    }.compact
  end      
end
base64_decode()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 502
def base64_decode
  if %rbase64/ === self.transfer_encoding('')
    store 'Content-Transfer-Encoding', '8bit'
    self.body = Base64.decode(self.body, @config.strict_base64decode?)
  end
end
base64_encode()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 497
def base64_encode
  store 'Content-Transfer-Encoding', 'Base64'
  self.body = Base64.folding_encode(self.body)
end
bcc( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 173
def bcc( default = nil )
  addrs2specs(bcc_addrs(nil)) || default
end
bcc=( *strs )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 185
def bcc=( *strs )
  set_string_array_attr 'Bcc', strs
end
bcc_addrs( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 145
def bcc_addrs( default = nil )
  if h = @header['bcc']
    h.addrs
  else
    default
  end
end
bcc_addrs=( arg )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 161
def bcc_addrs=( arg )
  set_addrfield 'bcc', arg
end
body(to_charset = 'utf-8', &block)
Also aliased as: preamble
# File rails/actionmailer/lib/action_mailer/vendor/tmail/quoting.rb, line 25
def body(to_charset = 'utf-8', &block)
  attachment_presenter = block || Proc.new { |file_name| "Attachment: #{file_name}\n" }

  if multipart?
    parts.collect { |part| 
      header = part["content-type"]

      if part.multipart?
        part.body(to_charset, &attachment_presenter)
      elsif header.nil?
        ""
      elsif !attachment?(part)
        part.unquoted_body(to_charset)
      else
        attachment_presenter.call(header["name"] || "(unnamed)")
      end
    }.join
  else
    unquoted_body(to_charset)
  end
end
body=( str )
Also aliased as: preamble=
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 357
def body=( str )
  parse_body
  @body_port.wopen {|f| f.write str }
  str
end
body_port()

body

# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 341
def body_port
  parse_body
  @body_port
end
cc( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 169
def cc( default = nil )
  addrs2specs(cc_addrs(nil)) || default
end
cc=( *strs )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 181
def cc=( *strs )
  set_string_array_attr 'Cc', strs
end
cc_addrs( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 137
def cc_addrs( default = nil )
  if h = @header['cc']
    h.addrs
  else
    default
  end
end
cc_addrs=( arg )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 157
def cc_addrs=( arg )
  set_addrfield 'cc', arg
end
charset( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 411
def charset( default = nil )
  if h = @header['content-type']
    h['charset'] or default
  else
    default
  end
end
charset=( str )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 419
def charset=( str )
  if str
    if h = @header[ 'content-type' ]
      h['charset'] = str
    else
      store 'Content-Type', "text/plain; charset=#{str}"
    end
  end
  str
end
clear()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 248
def clear
  @header.clear
end
content_disposition( default = nil )
content_disposition=( str, params = nil )
content_transfer_encoding( default = nil )
content_transfer_encoding=( str )
content_type( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 358
def content_type( default = nil )
  if h = @header['content-type']
    h.content_type || default
  else
    default
  end
end
content_type=( str, sub = nil, param = nil )
create_empty_mail()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 130
def create_empty_mail
  self.class.new(StringPort.new(''), @config)
end
create_forward()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 153
def create_forward
  setup_forward create_empty_mail()
end
create_reply()

utils

# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 486
def create_reply
  mail = TMail::Mail.parse('')
  mail.subject = 'Re: ' + subject('').sub(%r\A(?:\[[^\]]+\])?(?:\s*Re:)*\s*/, '')
  mail.to_addrs = reply_addresses([])
  mail.in_reply_to = [message_id(nil)].compact
  mail.references = references([]) + [message_id(nil)].compact
  mail.mime_version = '1.0'
  mail
end
date( default = nil )

date time

# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 99
def date( default = nil )
  if h = @header['date']
    h.date
  else
    default
  end
end
date=( time )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 107
def date=( time )
  if time
    store 'Date', time2str(time)
  else
    @header.delete 'date'
  end
  time
end
delete( key )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 252
def delete( key )
  @header.delete key.downcase
end
delete_if()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 256
def delete_if
  @header.delete_if do |key,val|
    if Array === val
      val.delete_if {|v| yield key, v }
      val.empty?
    else
      yield key, val
    end
  end
end
delete_no_send_fields()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 75
def delete_no_send_fields
  NOSEND_FIELDS.each do |nm|
    delete nm
  end
  delete_if {|n,v| v.empty? }
end
destinations( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 510
def destinations( default = nil )
  ret = []
  %w( to cc bcc ).each do |nm|
    if h = @header[nm]
      h.addrs.each {|i| ret.push i.address }
    end
  end
  ret.empty? ? default : ret
end
disposition( default = nil )
Also aliased as: content_disposition
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 449
def disposition( default = nil )
  if h = @header['content-disposition']
    h.disposition || default
  else
    default
  end
end
disposition=( str, params = nil )
disposition_param( name, default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 474
def disposition_param( name, default = nil )
  if h = @header['content-disposition']
    h[name] || default
  else
    default
  end
end
each( &block )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 346
def each( &block )
  body_port().ropen {|f| f.each(&block) }
end
each_dest( &block )
each_destination( &block )
Also aliased as: each_dest, each_dest
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 520
def each_destination( &block )
  destinations([]).each do |i|
    if Address === i
      yield i
    else
      i.each(&block)
    end
  end
end
each_field( &block )
Also aliased as: each_value
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 219
def each_field( &block )
  @header.values.flatten.each(&block)
end
each_header()
Also aliased as: each_pair
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 205
def each_header
  @header.each do |key, val|
    [val].flatten.each {|v| yield key, v }
  end
end
each_header_name( &block )
Also aliased as: each_key
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 213
def each_header_name( &block )
  @header.each_key(&block)
end
each_key( &block )
each_pair()
each_part( &block )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 382
def each_part( &block )
  parts().each(&block)
end
each_value( &block )
encoding( default = nil )
encoding=( str )
epilogue()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 366
def epilogue
  parse_body
  @epilogue.dup
end
epilogue=( str )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 371
def epilogue=( str )
  parse_body
  @epilogue = str
  str
end
error_reply_addresses( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 537
def error_reply_addresses( default = nil )
  if s = sender(nil)
    [s]
  else
    from_addrs(default)
  end
end
fetch( key )
friendly_from( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 214
def friendly_from( default = nil )
  h = @header['from']
  a, = h.addrs
  return default unless a
  return a.phrase if a.phrase
  return h.comments.join(' ') unless h.comments.empty?
  a.spec
end
from( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 206
def from( default = nil )
  addrs2specs(from_addrs(nil)) || default
end
from=( *strs )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 210
def from=( *strs )
  set_string_array_attr 'From', strs
end
from_addr( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb, line 55
def from_addr( default = nil )
  addr, = from_addrs(nil)
  addr || default
end
from_address( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb, line 60
def from_address( default = nil )
  if a = from_addr(nil)
    a.spec
  else
    default
  end
end
from_address=( arg )
from_addrs( default = nil )

originator

# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 194
def from_addrs( default = nil )
  if h = @header['from']
    h.addrs
  else
    default
  end
end
from_addrs=( arg )
Also aliased as: from_address=
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 202
def from_addrs=( arg )
  set_addrfield 'from', arg
end
from_phrase( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb, line 70
def from_phrase( default = nil )
  if a = from_addr(nil)
    a.phrase
  else
    default
  end
end
has_attachments?()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/attachments.rb, line 9
def has_attachments?
  multipart? && parts.any? { |part| attachment?(part) }
end
has_key?( key )
has_value?( val )
header()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 159
def header
  @header.dup
end
header_string( name, default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 37
def header_string( name, default = nil )
  h = @header[name.downcase] or return default
  h.to_s
end
in_reply_to( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 306
def in_reply_to( default = nil )
  if h = @header['in-reply-to']
    h.ids
  else
    default
  end
end
in_reply_to=( *idstrs )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 314
def in_reply_to=( *idstrs )
  set_string_array_attr 'In-Reply-To', idstrs
end
include?( key )
indexes( *args )
indices( *args )
inspect()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 76
def inspect
  "\#<#{self.class} port=#{@port.inspect} bodyport=#{@body_port.inspect}>"
end
key?( key )
Also aliased as: include?, has_key?
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 271
def key?( key )
  @header.key? key.downcase
end
keys()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 267
def keys
  @header.keys
end
main_type( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 366
def main_type( default = nil )
  if h = @header['content-type']
    h.main_type || default
  else
    default
  end
end
message_id( default = nil )

identity & threading

Also aliased as: msgid
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 294
def message_id( default = nil )
  if h = @header['message-id']
    h.id || default
  else
    default
  end
end
message_id=( str )
Also aliased as: msgid=
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 302
def message_id=( str )
  set_string_attr 'Message-Id', str
end
mime_encode()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 90
def mime_encode
  if parts.empty?
    mime_encode_singlepart
  else
    mime_encode_multipart true
  end
end
mime_encode_binary( body )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 114
def mime_encode_binary( body )
  self.body = [body].pack('m')
  self.set_content_type 'application', 'octet-stream'
  self.encoding = 'Base64'
end
mime_encode_multipart( top = true )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 120
def mime_encode_multipart( top = true )
  self.mime_version = '1.0' if top
  self.set_content_type 'multipart', 'mixed'
  e = encoding(nil)
  if e and not %r\A(?:7bit|8bit|binary)\z/ === e
    raise ArgumentError,
          'using C.T.Encoding with multipart mail is not permitted'
  end
end
mime_encode_singlepart()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 98
def mime_encode_singlepart
  self.mime_version = '1.0'
  b = body
  if NKF.guess(b) != NKF::BINARY
    mime_encode_text b
  else
    mime_encode_binary b
  end
end
mime_encode_text( body )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 108
def mime_encode_text( body )
  self.body = NKF.nkf('-j -m0', body)
  self.set_content_type 'text', 'plain', {'charset' => 'iso-2022-jp'}
  self.encoding = '7bit'
end
mime_version( default = nil )

MIME headers

# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 335
def mime_version( default = nil )
  if h = @header['mime-version']
    h.version || default
  else
    default
  end
end
mime_version=( m, opt = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 343
def mime_version=( m, opt = nil )
  if opt
    if h = @header['mime-version']
      h.major = m
      h.minor = opt
    else
      store 'Mime-Version', "#{m}.#{opt}"
    end
  else
    store 'Mime-Version', m
  end
  m
end
msgid( default = nil )
msgid=( str )
multipart?()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 546
def multipart?
  main_type('').downcase == 'multipart'
end
ordered_each()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 236
def ordered_each
  list = @header.keys
  FIELD_ORDER.each do |name|
    if list.delete(name)
      [@header[name]].flatten.each {|v| yield name, v }
    end
  end
  list.each do |name|
    [@header[name]].flatten.each {|v| yield name, v }
  end
end
parts()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 377
def parts
  parse_body
  @parts
end
preamble(to_charset = 'utf-8', &block)
preamble=( str )
quoted_body()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 350
def quoted_body
  parse_body
  @body_port.ropen {|f|
      return f.read
  }
end
quoted_subject( default = nil )
ready_to_send()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 64
def ready_to_send
  delete_no_send_fields
  add_message_id
  add_date
end
references( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 318
def references( default = nil )
  if h = @header['references']
    h.refs
  else
    default
  end
end
references=( *strs )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 326
def references=( *strs )
  set_string_array_attr 'References', strs
end
reply_addresses( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 533
def reply_addresses( default = nil )
  reply_to_addrs(nil) or from_addrs(nil) or default
end
reply_to( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 236
def reply_to( default = nil )
  addrs2specs(reply_to_addrs(nil)) || default
end
reply_to=( *strs )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 240
def reply_to=( *strs )
  set_string_array_attr 'Reply-To', strs
end
reply_to_addrs( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 224
def reply_to_addrs( default = nil )
  if h = @header['reply-to']
    h.addrs
  else
    default
  end
end
reply_to_addrs=( arg )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 232
def reply_to_addrs=( arg )
  set_addrfield 'reply-to', arg
end
send_text_to( smtp )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 43
def send_text_to( smtp )
  do_send_to(smtp) do
    ready_to_send
    mime_encode
  end
end
send_to( smtp )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 37
def send_to( smtp )
  do_send_to(smtp) do
    ready_to_send
  end
end
send_to_0( smtp, from, to )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 58
def send_to_0( smtp, from, to )
  smtp.ready(from, to) do |f|
    encoded "\r\n", 'j', f, ''
  end
end
sender( default )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 261
def sender( default )
  f = @header['sender'] or return default
  a = f.addr            or return default
  a.spec
end
sender=( str )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 267
def sender=( str )
  set_string_attr 'Sender', str
end
sender_addr( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 245
def sender_addr( default = nil )
  f = @header['sender'] or return default
  f.addr                or return default
end
sender_addr=( addr )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 250
def sender_addr=( addr )
  if addr
    h = HeaderField.internal_new('sender', @config)
    h.addr = addr
    @header['sender'] = h
  else
    @header.delete 'sender'
  end
  addr
end
set_content_disposition( str, params = nil )
set_content_type( str, sub = nil, param = nil )
Also aliased as: content_type=
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 382
def set_content_type( str, sub = nil, param = nil )
  if sub
    main, sub = str, sub
  else
    main, sub = str.split(%r</>, 2)
    raise ArgumentError, "sub type missing: #{str.inspect}" unless sub
  end
  if h = @header['content-type']
    h.main_type = main
    h.sub_type  = sub
    h.params.clear
  else
    store 'Content-Type', "#{main}/#{sub}"
  end
  @header['content-type'].params.replace param if param

  str
end
set_disposition( str, params = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 459
def set_disposition( str, params = nil )
  if h = @header['content-disposition']
    h.disposition = str
    h.params.clear
  else
    store('Content-Disposition', str)
    h = @header['content-disposition']
  end
  h.params.replace params if params
end
setup_forward( mail )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 157
def setup_forward( mail )
  m = Mail.new(StringPort.new(''))
  m.body = decoded
  m.set_content_type 'message', 'rfc822'
  m.encoding = encoding('7bit')
  mail.parts.push m
end
setup_reply( m )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/net.rb, line 138
def setup_reply( m )
  if tmp = reply_addresses(nil)
    m.to_addrs = tmp
  end

  mid = message_id(nil)
  tmp = references(nil) || []
  tmp.push mid if mid
  m.in_reply_to = [mid] if mid
  m.references = tmp unless tmp.empty?
  m.subject = 'Re: ' + subject('').sub(%r\A(?:\s*re:)+/, '')

  m
end
store( key, val )
strftime( fmt, default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 116
def strftime( fmt, default = nil )
  if t = date
    t.strftime(fmt)
  else
    default
  end
end
sub_header(key, param)
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 167
def sub_header(key, param)
  (hdr = self[key]) ? hdr[param] : nil
end
sub_type( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 374
def sub_type( default = nil )
  if h = @header['content-type']
    h.sub_type || default
  else
    default
  end
end
subject( default = nil )

subject

Also aliased as: quoted_subject
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 276
def subject( default = nil )
  if h = @header['subject']
    h.body
  else
    default
  end
end
subject=( str )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 285
def subject=( str )
  set_string_attr 'Subject', str
end
to( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 165
def to( default = nil )
  addrs2specs(to_addrs(nil)) || default
end
to=( *strs )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 177
def to=( *strs )
  set_string_array_attr 'To', strs
end
to_addrs( default = nil )

destination

# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 129
def to_addrs( default = nil )
  if h = @header['to']
    h.addrs
  else
    default
  end
end
to_addrs=( arg )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 153
def to_addrs=( arg )
  set_addrfield 'to', arg
end
transfer_encoding( default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 431
def transfer_encoding( default = nil )
  if h = @header['content-transfer-encoding']
    h.encoding || default
  else
    default
  end
end
transfer_encoding=( str )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 439
def transfer_encoding=( str )
  set_string_attr 'Content-Transfer-Encoding', str
end
type_param( name, default = nil )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/facade.rb, line 403
def type_param( name, default = nil )
  if h = @header['content-type']
    h[name] || default
  else
    default
  end
end
unquoted_body(to_charset = 'utf-8')
# File rails/actionmailer/lib/action_mailer/vendor/tmail/quoting.rb, line 7
def unquoted_body(to_charset = 'utf-8')
  from_charset = sub_header("content-type", "charset")
  case (content_transfer_encoding || "7bit").downcase
    when "quoted-printable"
      Unquoter.unquote_quoted_printable_and_convert_to(quoted_body,
        to_charset, from_charset, true)
    when "base64"
      Unquoter.unquote_base64_and_convert_to(quoted_body, to_charset,
        from_charset)
    when "7bit", "8bit"
      Unquoter.convert_to(quoted_body, to_charset, from_charset)
    when "binary"
      quoted_body
    else
      quoted_body
  end
end
value?( val )
Also aliased as: has_value?
# File rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb, line 43
def value?( val )
  HeaderField === val or return false

  [ @header[val.name.downcase] ].flatten.include? val
end
values()
# File rails/actionmailer/lib/action_mailer/vendor/tmail/obsolete.rb, line 37
def values
  ret = []
  each_field {|v| ret.push v }
  ret
end
values_at( *args )
Also aliased as: indexes, indices
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 275
def values_at( *args )
  args.map {|k| @header[k.downcase] }.flatten
end
write_back( eol = "\n", charset = 'e' )
# File rails/actionmailer/lib/action_mailer/vendor/tmail/mail.rb, line 88
def write_back( eol = "\n", charset = 'e' )
  parse_body
  @port.wopen {|stream| encoded eol, charset, stream }
end