Class: Lazylead::Postman

Inherits:
Object
  • Object
show all
Includes:
Emailing
Defined in:
lib/lazylead/postman.rb

Overview

TODO:

#/DEV Merge Smtp and Postman objects. There might be different postman’s based on different mail servers, thus its better to keep together the instantiation and sending. For each type of mail servers we should have separate object.

TODO:

#/DEV TestMail.deliveries -> store all emails to the files in /test/resources/testmailer/*.html. Right now after each test with email sending we taking the body and test it content. Quite ofter we need to check visual style in mails, etc, thus its better to store them on disk.

A postman to send emails.

Author

Yurii Dubinka ([email protected])

Copyright

Copyright © 2019-2020 Yurii Dubinka

License

MIT

Instance Method Summary collapse

Methods included from Emailing

#make_body, #split

Constructor Details

#initialize(log = Log::NOTHING) ⇒ Postman

Returns a new instance of Postman.



49
50
51
# File 'lib/lazylead/postman.rb', line 49

def initialize(log = Log::NOTHING)
  @log = log
end

Instance Method Details

#detect_cc(opts) ⇒ Object



72
73
74
75
76
# File 'lib/lazylead/postman.rb', line 72

def detect_cc(opts)
  cc = opts["cc"]
  cc = split("cc", opts) if !cc.nil? && cc.include?(",")
  cc
end

#send(opts) ⇒ Object

Send an email.

:opts

the mail configuration like to, from, cc, subject, template.



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/lazylead/postman.rb', line 55

def send(opts)
  html = make_body(opts)
  cc = detect_cc(opts)
  Mail.deliver do
    to opts[:to] || opts["to"]
    from opts["from"]
    cc cc if opts.key? "cc"
    subject opts["subject"]
    html_part do
      content_type "text/html; charset=UTF-8"
      body html
    end
  end
  @log.debug "Email was generated from #{opts} and send by #{__FILE__}. " \
             "Here is the body: #{html}"
end