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