class Mailthis::OutgoingEmail
Constants
- ADDRESS_FIELDS
- REQUIRED_FIELDS
deliver a message using using Net::SMTP with TLS encryption it is recommended to use Mail (github.com/mikel/mail) messages to disable delivery, set `ENV = 'yes'`
Attributes
mailer[R]
message[R]
Public Class Methods
new(mailer, message)
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 18 def initialize(mailer, message) raise Mailthis::MessageError, "invalid message" if !valid_message?(message) @mailer, @message = mailer, message @message.from ||= @mailer.from @message.reply_to ||= @message.from end
Public Instance Methods
deliver()
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 48 def deliver self.deliver_dry_run do |msg| deliver_smtp(msg) if ENV['MAILTHIS_DISABLE_SEND'].nil? end end
deliver_dry_run() { |message| ... }
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 38 def deliver_dry_run self.validate! @mailer.validate! yield(self.message) if block_given? log_message(self.message) self.message end
validate!()
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 26 def validate! REQUIRED_FIELDS.each do |field| if !field_present?(@message, field) raise Mailthis::MessageError, "missing `#{field}` field" end end if !fields_present?(@message, ADDRESS_FIELDS) raise Mailthis::MessageError, "no #{ADDRESS_FIELDS.join('/')} specified" end end
Private Instance Methods
debug_log_entry(msg)
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 92 def debug_log_entry(msg) "\n"\ "==============================================================\n"\ "#{msg}\n"\ "==============================================================\n" end
deliver_smtp(msg)
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 68 def deliver_smtp(msg) smtp_start_args = [ @mailer.smtp_server, @mailer.smtp_port, @mailer.smtp_helo, @mailer.smtp_user, @mailer.smtp_pw, @mailer.smtp_auth ] Net::SMTP.start(*smtp_start_args) do |smtp| ADDRESS_FIELDS.each do |field| if (recipients = msg.send(field)) recipients.each{ |r| smtp.send_message(msg.to_s, msg.from, r) } end end end end
field_present?(message, field)
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 64 def field_present?(message, field) !message.send(field).nil? && !message.send(field).empty? end
fields_present?(message, fields)
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 60 def fields_present?(message, fields) fields.inject(false){ |present, f| present || field_present?(message, f) } end
log(msg, level = nil)
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 99 def log(msg, level = nil) @mailer.logger.send(level || :info, msg) end
log_message(msg)
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 87 def log_message(msg) log "Sent '#{msg.subject}' to #{msg.to ? msg.to.join(', ') : "''"}" log debug_log_entry(msg), :debug end
valid_message?(message)
click to toggle source
# File lib/mailthis/outgoing_email.rb, line 56 def valid_message?(message) message.kind_of?(Mailthis::Message) end