class Sinatra::Mailer::Email

Attributes

config[RW]
mail[RW]

Public Class Methods

new(o={}) click to toggle source

Parameters

o<Hash{~to_s => Object}>

Configuration commands to send to MailFactory.

# File lib/sinatra_mailer/mailer.rb, line 92
def initialize(o={})
  self.config = Mailer.config || {:sendmail_path => "/usr/sbin/sendmail"}
  o[:rawhtml] = o.delete(:html)
  m = MailFactory.new()
  o.each { |k,v| m.send "#{k}=", v }
  @mail = m
end

Public Instance Methods

attach(file_or_files, filename = file_or_files.is_a?(File) ? File.basename(file_or_files.path) : nil, type = nil, headers = nil) click to toggle source

Parameters

file_or_files<File, Array>

File(s) to attach.

filename<String>
type<~to_s>

The attachment MIME type. If left out, it will be determined from file_or_files.

headers<String, Array>

Additional attachment headers.

Raises

ArgumentError

file_or_files was not a File or an Array of File instances.

# File lib/sinatra_mailer/mailer.rb, line 80
def attach(file_or_files, filename = file_or_files.is_a?(File) ? File.basename(file_or_files.path) : nil, 
  type = nil, headers = nil)
  if file_or_files.is_a?(Array)
    file_or_files.each {|k,v| @mail.add_attachment_as k, *v}
  else
    raise ArgumentError, "You did not pass in a file. Instead, you sent a #{file_or_files.class}" if !file_or_files.is_a?(File)
    @mail.add_attachment_as(file_or_files, filename, type, headers)
  end
end
deliver!() click to toggle source

Delivers the mail with the specified delivery method, defaulting to net_smtp.

# File lib/sinatra_mailer/mailer.rb, line 65
def deliver!
  send(Mailer.delivery_method || :net_smtp)
end
net_smtp() click to toggle source

Sends the mail using SMTP.

# File lib/sinatra_mailer/mailer.rb, line 56
def net_smtp
  Net::SMTP.start(config[:host], config[:port].to_i, config[:domain], 
                  config[:user], config[:pass], config[:auth]) { |smtp|
    smtp.send_message(@mail.to_s, @mail.from.first, @mail.to.to_s.split(/[,;]/))
  }
end
sendmail() click to toggle source

Sends the mail using sendmail.

# File lib/sinatra_mailer/mailer.rb, line 49
def sendmail
  sendmail = IO.popen("#{config[:sendmail_path]} #{@mail.to}", "w+") 
  sendmail.puts @mail.to_s
  sendmail.close
end