ses_api-rails 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4de9daf34f95efa8b7df130f3aa60a03a4ff19a8
4
- data.tar.gz: 55dc920bb50c3a435040e9556d3c66a08bd92b23
3
+ metadata.gz: fbc9437dc0c338b9dbd896f49e490c91434146c9
4
+ data.tar.gz: c1794cfaf066969298a913830928adf5513abddd
5
5
  SHA512:
6
- metadata.gz: 1dc9fc30d9186dc9eaea6293447522ef1bd2ffeb7cca7114dbabdce90d4271dc4e20ee39d3d7f36fb78a77c6b0eb82e9443667a1441e092e7e958138e343a14e
7
- data.tar.gz: ece94310d777f0ae08604db59014caa008be02fdf4989387c208e3322327a51d7c995b6dd9a35071293c32c84d30a07a927e7aa5a2e24ba79cc0824b9294bb31
6
+ metadata.gz: 92eb2f7e7708052aa272a85de157892be39d8e519442454fb5af2b209ed48d085fbdccdf8079493f006800f84fa9329e79f9febab6a436d34a6c1847a94a876a
7
+ data.tar.gz: bb5380c00ec717c258892c31dc0bdcdeb0c926e3b3bc57da8333f833a536964b96edfa5a6ddaf94b3ba8388150b75e1639884159c15b58942803d57c6220cf22
@@ -54,10 +54,9 @@ module SesApi
54
54
  end
55
55
 
56
56
  def create_payload
57
- to = mail.to.each_with_index.map { |email, i| "&Destination.ToAddresses.member.#{i+1}=#{CGI::escape(email)}"}.join
58
- cc = mail.cc.each_with_index.map { |email, i| "&Destination.CcAddresses.member.#{i+1}=#{CGI::escape(email)}"}.join if mail.cc.present?
59
- bcc = mail.bcc.each_with_index.map { |email, i| "&Destination.BccAddresses.member.#{i+1}=#{CGI::escape(email)}"}.join if mail.bcc.present?
60
- from = "&Source=#{CGI::escape(mail.from[0])}"
57
+ display_names = create_display_names
58
+ destinations = build_destination_addresses(display_names)
59
+ from = "&Source=#{format_email(mail.from[0], display_names)}"
61
60
  subject = "&Message.Subject.Data=#{CGI::escape(mail.subject)}"
62
61
 
63
62
  if mail.body.raw_source.present?
@@ -68,7 +67,31 @@ module SesApi
68
67
  body << "&Message.Body.Text.Data=#{CGI::escape(mail.text_part.body.raw_source)}&Message.Body.Text.Charset=UTF-8"
69
68
  end
70
69
 
71
- payload = "AWSAccessKeyId=#{SesApi::Rails.configuration.access_key_id}&Action=SendEmail#{to}#{cc}#{bcc}#{body}#{subject}#{from}"
70
+ payload = "AWSAccessKeyId=#{SesApi::Rails.configuration.access_key_id}&Action=SendEmail#{destinations}#{body}#{subject}#{from}"
71
+ end
72
+
73
+ def create_display_names
74
+ display_names = {}
75
+ mail.header.fields.each do |f|
76
+ if %w[To From Cc Bcc].include? f.name
77
+ f.address_list.addresses.each do |a|
78
+ email = "#{a.local}@#{a.domain}"
79
+ display_names.[]=(email, a.display_name) ? a.display_name.present? : a.local
80
+ end
81
+ end
82
+ end
83
+ display_names
84
+ end
85
+
86
+ def build_destination_addresses(display_names)
87
+ to = mail.to.each_with_index.map { |email, i| "&Destination.ToAddresses.member.#{i+1}=#{format_email(email, display_names)}"}.join
88
+ cc = mail.cc.each_with_index.map { |email, i| "&Destination.CcAddresses.member.#{i+1}=#{format_email(email, display_names)}"}.join if mail.cc.present?
89
+ bcc = mail.bcc.each_with_index.map { |email, i| "&Destination.BccAddresses.member.#{i+1}=#{format_email(email, display_names)}"}.join if mail.bcc.present?
90
+ return "#{to}#{cc}#{bcc}"
91
+ end
92
+
93
+ def format_email(email, display_names)
94
+ CGI::escape("#{display_names[email]}<#{email}>")
72
95
  end
73
96
 
74
97
  def create_canonical_request(headers, hashed_payload, signed_headers)
@@ -1,5 +1,5 @@
1
1
  module SesApi
2
2
  module Rails
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ses_api-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Ickes