class MessagebusActionMailerClient
Public Instance Methods
deliver(message)
click to toggle source
used by ActionMailer
# File lib/messagebus-sdk/actionmailer_client.rb, line 20 def deliver(message) deliver!(message) end
deliver!(message)
click to toggle source
# File lib/messagebus-sdk/actionmailer_client.rb, line 24 def deliver!(message) #minimum required headers if message.to.nil? || message.to.first.nil? || message.subject.nil? || message.from.first.nil? || message.return_path.nil? then raise "Messagebus API error=Missing required header: :toEmail => #{message.to} :subject => #{message.subject} :fromEmail => #{message.from.first}" end message_from_email = from_email_with_name(message.header[:from].to_s) from_name = "" from_email = message.from.first if !message_from_email.nil? from_name = message_from_email[1] end if !well_formed_address?(from_email) raise "Messagebus API error=From Address is invalid :toEmail => #{message.to.first} :subject => #{message.subject} :fromEmail => #{message.from.first}" end custom_headers = {} custom_headers["bcc"] = message.bcc[0] if !message.bcc.nil? && message.bcc.length != 0 session_key = DEFAULT message.header.fields.each do |f| if f.name == HEADER_SESSION_KEY session_key = f.value.to_s else if f.name =~ /x-.*/i custom_headers[f.name] = f.value.to_s end end end msg = { :toEmail => message.to.first, :toName => "", :subject => message.subject, :fromEmail => from_email, :fromName => from_name, :returnPath => message.return_path, :sessionKey => session_key, :customHeaders => custom_headers } msg[:plaintextBody] = ( message.body ) ? "#{message.body}" : "No plaintext version was supplied." if message.multipart? msg[:plaintextBody] = (message.text_part) ? message.text_part.body.to_s : "No plaintext version was supplied." msg[:htmlBody] = message.html_part.body.to_s if message.html_part end begin send_messages([msg]) rescue => message_bus_api_error raise "Messagebus API error=#{message_bus_api_error}, message=#{msg.inspect}" end end
Private Instance Methods
from_email_with_name(address)
click to toggle source
# File lib/messagebus-sdk/actionmailer_client.rb, line 84 def from_email_with_name(address) address.match(/^(.*)\s<(.*?)>/) end