class Knj::Mail

Public Class Methods

new(paras = {}) click to toggle source
# File lib/knj/mail.rb, line 2
def initialize(paras = {})
  @paras = {
    "smtp_host" => "localhost",
    "smtp_port" => 25,
    "smtp_user" => nil,
    "smtp_passwd" => nil,
    "smtp_domain" => ENV["HOSTNAME"]
  }
  
  if paras.is_a?(Hash)
    paras.each do |key, value|
      @paras[key] = value
    end
  end
  
  self.send if @paras["send"]
end

Public Instance Methods

from=(value) click to toggle source
# File lib/knj/mail.rb, line 28
def from=(value)
  @paras["from"] = value
end
html=(value) click to toggle source
# File lib/knj/mail.rb, line 20
def html=(value)
  @paras["html"] = value
end
send() click to toggle source
# File lib/knj/mail.rb, line 40
def send
  raise "No email has been defined to send to." if !@paras["to"]
  raise "No subject has been defined." if !@paras["subject"]
  raise "No content has been defined." if !@paras["text"] and !@paras["html"]
  
  mail = TMail::Mail.new
  mail.to = @paras["to"]
  mail.subject = @paras["subject"]
  mail.date = Time.new
  
  mail.from = @paras["from"] if @paras["from"]
  
  if @paras["html"]
    mail.set_content_type("text", "html")
    mail.body = @paras["html"]
  elsif @paras["text"]
    mail.body = @paras["text"]
  end
  
  smtp_start = Net::SMTP.new(@paras["smtp_host"], @paras["smtp_port"])
  smtp_start.enable_ssl if @paras["ssl"]
  smtp_start.enable_starttls if @paras["tls"]
  
  if !@paras["smtp_domain"]
    if @paras["smtp_host"]
      @paras["smtp_domain"] = @paras["smtp_host"]
    else
      raise "SMTP domain not given."
    end
  end
  
  smtp_start.start(@paras["smtp_domain"], @paras["smtp_user"], @paras["smtp_passwd"]) do |smtp|
    smtp.send_message(mail.to_s, @paras["from"], @paras["to"])
  end
end
subject=(value) click to toggle source
# File lib/knj/mail.rb, line 32
def subject=(value)
  @paras["subject"] = value
end
text=(value) click to toggle source
# File lib/knj/mail.rb, line 24
def text=(value)
  @paras["text"] = value
end
to=(value) click to toggle source
# File lib/knj/mail.rb, line 36
def to=(value)
  @paras["to"] = value.untaint
end