class SendcloudMailer::Base
Attributes
settings[RW]
Public Class Methods
new(settings)
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 7 def initialize(settings) self.settings = settings end
Public Instance Methods
deliver!(mail)
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 11 def deliver!(mail) @mail = mail params = { :apiUser => settings[:api_user], :apiKey => settings[:api_key], :from => from, :to => to, :cc => cc, :bcc => bcc, :subject => mail.subject, :html => html, :plain => plain, :attachments => attachments, :labelId => label_id } params.delete_if { |k, v| v.nil? } result = RestClient.post( 'http://api.sendcloud.net/apiv2/mail/send', params ) json = JSON.parse(result.force_encoding('UTF-8')) error(json) unless json["result"] unless @file.nil? File.unlink(@file.path) rescue nil end end
Private Instance Methods
addresses(name)
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 59 def addresses(name) result = @mail.header.fields.find { |f| f.name == name } unless result.nil? addresses = result.address_list.addresses addresses.join(';') end end
attachments()
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 75 def attachments return nil if @mail.attachments.length == 0 @mail.attachments.each do | attachment | filename = attachment.filename # sendcloud api can only single file @file = File.new(File.join(Dir.tmpdir, filename), 'w+b') @file.write(attachment.body.decoded) return @file end end
bcc()
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 55 def bcc addresses 'Bcc' end
cc()
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 51 def cc addresses 'Cc' end
error(message)
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 39 def error(message) ActionMailer::Base.logger.error(message) unless ActionMailer::Base.logger.nil? end
from()
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 43 def from @mail.header.fields.find{|f| f.name == "From"}.value end
html()
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 67 def html @mail.html_part ? @mail.html_part.body.decoded : nil end
label_id()
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 87 def label_id @mail.header.fields.find { |f| f.name == 'label-id' }.try :value end
plain()
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 71 def plain @mail.multipart? ? (@mail.text_part ? @mail.text_part.body.decoded : nil) : @mail.body.decoded end
to()
click to toggle source
# File lib/sendcloud-mailer/base.rb, line 47 def to addresses 'To' end