class Mailer

include Contracts ~~~~~~~~~~~~~~~~~~~~~~~~~~

Public Class Methods

email_valid?(email) click to toggle source

Contract String => Bool

# File lib/tmis/engine/mailer/mailer.rb, line 19
def self.email_valid?(email)
  true & (/[\w\d\._\-]+@[\w\d\.\-]+[\.][\w\d\.\-]+/i =~ email)
end
new(email, password, &block) click to toggle source

Contract String, String, Proc => Any

# File lib/tmis/engine/mailer/mailer.rb, line 10
def initialize(email, password, &block)
  @email = Mailer.email_valid?(email) ? email : (raise ArgumentError, "Incorrect email: #{email}")
  @password = password
  set_defaults
  @mail = Mail.new(&block)
  @mail.charset = 'UTF-8'
end

Public Instance Methods

send!() click to toggle source

Contract None => Any

# File lib/tmis/engine/mailer/mailer.rb, line 24
def send!
  @mail.deliver!
end

Private Instance Methods

email_parts() click to toggle source

Contract None => ({ local: String, domain: String })

# File lib/tmis/engine/mailer/mailer.rb, line 30
def email_parts
  @email[/([\w\d._-]+)@([\w\d.-]+)/i]
  { local: $1, domain: $2 }
end
set_defaults() click to toggle source

Contract None => Any

# File lib/tmis/engine/mailer/mailer.rb, line 36
def set_defaults
  parts = email_parts
  p email_parts
  pass = @password
  Mail.defaults do
    delivery_method :smtp, {
      address: "smtp.#{parts[:domain]}",
      port: '587',
      user_name: parts[:local],
      password: pass,
      authentication: :plain,
      enable_starttls_auto: true
    }
  end
end