class Malone

Attributes

config[R]

Public Class Methods

connect(options = {}) click to toggle source
# File lib/malone.rb, line 9
def self.connect(options = {})
  @config = Configuration.new(options)

  current
end
current() click to toggle source
# File lib/malone.rb, line 15
def self.current
  unless defined?(@config)
    raise RuntimeError, "Missing configuration: Try doing `Malone.connect`."
  end

  return new(@config)
end
deliver(dict) click to toggle source
# File lib/malone.rb, line 23
def self.deliver(dict)
  current.deliver(dict)
end
deliveries() click to toggle source
# File lib/malone/test.rb, line 4
def self.deliveries
  @deliveries ||= []
end
new(config) click to toggle source
# File lib/malone.rb, line 27
def initialize(config)
  @config = config
end
reset_deliveries() click to toggle source
# File lib/malone/test.rb, line 8
def self.reset_deliveries
  @deliveries = nil
end

Public Instance Methods

deliver(dict) { |mail| ... } click to toggle source
# File lib/malone.rb, line 31
def deliver(dict)
  mail = envelope(dict)
  yield mail if block_given?

  smtp = Net::SMTP.new(config.host, config.port)

  if config.force_tls
    smtp.enable_starttls
  elsif config.tls
    smtp.enable_starttls_auto
  end

  begin
    smtp.start(config.domain, config.user, config.password, config.auth)
    smtp.send_message(mail.to_s, mail.from.first, *mail.recipients)
  ensure
    smtp.finish if smtp.started?
  end
end
envelope(dict) click to toggle source
# File lib/malone.rb, line 51
def envelope(dict)
  envelope = Kuvert.new
  envelope.from    = dict[:from]
  envelope.to      = dict[:to]
  envelope.replyto = dict[:replyto]
  envelope.cc      = dict[:cc] if dict[:cc]
  envelope.bcc     = dict[:bcc] if dict[:bcc]
  envelope.text    = dict[:text]
  envelope.rawhtml = dict[:html] if dict[:html]
  envelope.subject = dict[:subject]

  envelope.attach(dict[:attach]) if dict[:attach]
  envelope.add_attachment_as(*dict[:attach_as]) if dict[:attach_as]

  return envelope
end