Method: MultiMail::Sender::Postmark#deliver!
- Defined in:
- lib/multi_mail/postmark/sender.rb
#deliver!(mail) ⇒ Object
Delivers a message via the Postmark API.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/multi_mail/postmark/sender.rb', line 49 def deliver!(mail) = MultiMail::Message::Postmark.new(mail).to_postmark_hash.merge(parameters) response = Faraday.post do |request| request.url 'https://api.postmarkapp.com/email' request.headers['Accept'] = 'application/json' request.headers['Content-Type'] = 'application/json' request.headers['X-Postmark-Server-Token'] = @api_key request.body = JSON.dump() end body = JSON.load(response.body) unless response.status == 200 case body['ErrorCode'] when 10 raise InvalidAPIKey, body['Message'] when 300 case body['Message'] when "Header 'Content-Type' not allowed." raise InvalidHeader, body['Message'] when "Header 'Date' not allowed." raise InvalidHeader, body['Message'] when "Invalid 'From' value." raise MissingSender, body['Message'] when 'Zero recipients specified' raise MissingRecipients, body['Message'] when 'Provide either email TextBody or HtmlBody or both.' raise MissingBody, body['Message'] else raise InvalidMessage, body['Message'] end else raise InvalidRequest, body['Message'] end end if settings[:return_response] body else self end end |