aws-ses 0.4.4 → 0.5.0

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.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ 0.4.5:
2
+ * Check for existence of html or text body when attachments are included
3
+ * Message ids in mail objects should now reflect what is actually sent.
4
+
1
5
  0.4.4:
2
6
  * Fixed error in initialized settings if you don't set them manually
3
7
 
data/README.erb CHANGED
@@ -20,7 +20,7 @@ This gem is compatible with Rails >= 3.0.0 and Rails 2.3.x
20
20
 
21
21
  To use, first add the gem to your Gemfile:
22
22
 
23
- gem "aws-ses", "~> 0.4.4", :require => 'aws/ses'
23
+ gem "aws-ses", "~> 0.5.0", :require => 'aws/ses'
24
24
 
25
25
  == For Rails 3.x
26
26
 
@@ -89,4 +89,4 @@ Special thanks to Marcel Molina Jr. for his creation of AWS::S3 which I used por
89
89
  * nathanbertram
90
90
  * sshaw
91
91
  * teeparham (documentation)
92
- * pzb
92
+ * pzb
@@ -26,11 +26,12 @@ Adds functionality for send_email and send_raw_email
26
26
  Use the following to send an e-mail:
27
27
 
28
28
  ses = AWS::SES::Base.new( ... connection info ... )
29
- ses.send_email :to => ['jon@example.com', 'dave@example.com'],
29
+ ses.send_email (
30
+ :to => ['jon@example.com', 'dave@example.com'],
30
31
  :source => '"Steve Smith" <steve@example.com>',
31
32
  :subject => 'Subject Line'
32
33
  :text_body => 'Internal text body'
33
-
34
+ )
34
35
  By default, the email "from" display address is whatever is before the @.
35
36
  To change the display from, use the format:
36
37
 
@@ -94,8 +95,13 @@ GetSendStatisticsResponse#data_points is an array where each element is a hash w
94
95
  * +Complaints+
95
96
  * +Timestamp+
96
97
 
97
- response = ses.statistics
98
- response.data_points # =>
98
+ For example:
99
+
100
+ response = ses.statistics
101
+ response.data_points
102
+
103
+ will return:
104
+
99
105
  [{"Bounces"=>"0",
100
106
  "Timestamp"=>"2011-01-26T16:30:00Z",
101
107
  "DeliveryAttempts"=>"1",
@@ -124,7 +130,7 @@ This gem is compatible with Rails >= 3.0.0 and Rails 2.3.x
124
130
 
125
131
  To use, first add the gem to your Gemfile:
126
132
 
127
- gem "aws-ses", "~> 0.4.4", :require => 'aws/ses'
133
+ gem "aws-ses", "~> 0.5.0", :require => 'aws/ses'
128
134
 
129
135
  == For Rails 3.x
130
136
 
@@ -193,4 +199,4 @@ Special thanks to Marcel Molina Jr. for his creation of AWS::S3 which I used por
193
199
  * nathanbertram
194
200
  * sshaw
195
201
  * teeparham (documentation)
196
- * pzb
202
+ * pzb
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.4
1
+ 0.5.0
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{aws-ses}
8
- s.version = "0.4.4"
7
+ s.name = "aws-ses"
8
+ s.version = "0.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Drew Blas", "Marcel Molina Jr."]
12
- s.date = %q{2011-11-19}
13
- s.description = %q{Client library for Amazon's Simple Email Service's REST API}
14
- s.email = %q{drew.blas@gmail.com}
12
+ s.date = "2013-04-30"
13
+ s.description = "Client library for Amazon's Simple Email Service's REST API"
14
+ s.email = "drew.blas@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.erb",
@@ -49,11 +49,11 @@ Gem::Specification.new do |s|
49
49
  "test/response_test.rb",
50
50
  "test/send_email_test.rb"
51
51
  ]
52
- s.homepage = %q{http://github.com/drewblas/aws-ses}
52
+ s.homepage = "http://github.com/drewblas/aws-ses"
53
53
  s.licenses = ["MIT"]
54
54
  s.require_paths = ["lib"]
55
- s.rubygems_version = %q{1.5.2}
56
- s.summary = %q{Client library for Amazon's Simple Email Service's REST API}
55
+ s.rubygems_version = "1.8.19"
56
+ s.summary = "Client library for Amazon's Simple Email Service's REST API"
57
57
  s.test_files = [
58
58
  "test/address_test.rb",
59
59
  "test/base_test.rb",
@@ -23,6 +23,6 @@ require 'ses/version'
23
23
  require 'ses/addresses'
24
24
 
25
25
  if defined?(Rails)
26
- major, minor = Rails.version.split('.')
26
+ major, minor = Rails.version.to_s.split('.')
27
27
  require 'actionmailer/ses_extension' if major == '2' && minor == '3'
28
- end
28
+ end
@@ -9,13 +9,13 @@ module AWS
9
9
  # :subject => 'Subject Line'
10
10
  # :text_body => 'Internal text body'
11
11
  #
12
- # By default, the email "from" display address is whatever is before the @.
13
- # To change the display from, use the format:
12
+ # By default, the email "from" display address is whatever is before the @.
13
+ # To change the display from, use the format:
14
14
  #
15
15
  # "Steve Smith" <steve@example.com>
16
16
  #
17
17
  # You can also send Mail objects using send_raw_email:
18
- #
18
+ #
19
19
  # m = Mail.new( :to => ..., :from => ... )
20
20
  # ses.send_raw_email(m)
21
21
  #
@@ -24,9 +24,9 @@ module AWS
24
24
  module SendEmail
25
25
 
26
26
  # Sends an email through SES
27
- #
27
+ #
28
28
  # the destination parameters can be:
29
- #
29
+ #
30
30
  # [A single e-mail string] "jon@example.com"
31
31
  # [A array of e-mail addresses] ['jon@example.com', 'dave@example.com']
32
32
  #
@@ -75,7 +75,7 @@ module AWS
75
75
  #
76
76
  # This uses the underlying Mail object from the mail gem
77
77
  # You can pass in a Mail object, a Hash of params that will be parsed by Mail.new, or just a string
78
- #
78
+ #
79
79
  # Note that the params are different from send_email
80
80
  # Specifically, the following fields from send_email will NOT work:
81
81
  #
@@ -96,8 +96,9 @@ module AWS
96
96
  # @option args [String] :to alias for :destinations
97
97
  # @return [Response]
98
98
  def send_raw_email(mail, args = {})
99
- message = mail.is_a?(Hash) ? Mail.new(mail).to_s : mail.to_s
100
- package = { 'RawMessage.Data' => Base64::encode64(message) }
99
+ message = mail.is_a?(Hash) ? Mail.new(mail) : mail
100
+ raise ArgumentError, "Attachment provided without message body" if message.has_attachments? && message.text_part.nil? && message.html_part.nil?
101
+ package = { 'RawMessage.Data' => Base64::encode64(message.to_s) }
101
102
  package['Source'] = args[:from] if args[:from]
102
103
  package['Source'] = args[:source] if args[:source]
103
104
  if args[:destinations]
@@ -105,7 +106,9 @@ module AWS
105
106
  else
106
107
  add_array_to_hash!(package, 'Destinations', args[:to]) if args[:to]
107
108
  end
108
- request('SendRawEmail', package)
109
+ result = request('SendRawEmail', package)
110
+ message.message_id = "#{result.parsed['SendRawEmailResult']['MessageId']}@email.amazonses.com"
111
+ result
109
112
  end
110
113
 
111
114
  alias :deliver! :send_raw_email
@@ -54,3 +54,9 @@ class Test::Unit::TestCase
54
54
  Base.new(:access_key_id=>'123', :secret_access_key=>'abc')
55
55
  end
56
56
  end
57
+
58
+ # Deals w/ http://github.com/thoughtbot/shoulda/issues/issue/117, see
59
+ # http://stackoverflow.com/questions/3657972/nameerror-uninitialized-constant-testunitassertionfailederror-when-upgradin
60
+ unless defined?(Test::Unit::AssertionFailedError)
61
+ Test::Unit::AssertionFailedError = ActiveSupport::TestCase::Assertion
62
+ end
@@ -46,6 +46,24 @@ class SendEmailTest < Test::Unit::TestCase
46
46
  assert_equal 'xyz-123', result.request_id
47
47
  end
48
48
 
49
+ should 'throw ArgumentException when attachment supplied without a body' do
50
+ #mock_connection(@base, :body => %{
51
+ # <SendRawEmailResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
52
+ # <SendRawEmailResult>
53
+ # <MessageId>abc-123</MessageId>
54
+ # </SendRawEmailResult>
55
+ # <ResponseMetadata>
56
+ # <RequestId>xyz-123</RequestId>
57
+ # </ResponseMetadata>
58
+ # </SendRawEmailResponse>
59
+ #})
60
+ message = Mail.new({:from => 'jon@example.com', :to => 'dave@example.com', :subject => 'Subject1'})
61
+ message.attachments['foo'] = { :mime_type => 'application/csv', :content => '1,2,3' }
62
+ assert_raise ArgumentError do
63
+ result = @base.send_raw_email message
64
+ end
65
+ end
66
+
49
67
  should 'send a raw e-mail with a hash object' do
50
68
  mock_connection(@base, :body => %{
51
69
  <SendRawEmailResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
@@ -64,4 +82,4 @@ class SendEmailTest < Test::Unit::TestCase
64
82
  assert_equal 'xyz-123', result.request_id
65
83
  end
66
84
  end
67
- end
85
+ end
metadata CHANGED
@@ -1,151 +1,171 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: aws-ses
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 4
8
- - 4
9
- version: 0.4.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Drew Blas
13
9
  - Marcel Molina Jr.
14
10
  autorequire:
15
11
  bindir: bin
16
12
  cert_chain: []
17
-
18
- date: 2011-11-19 00:00:00 -06:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
13
+ date: 2013-04-30 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: xml-simple
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
31
23
  type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
34
- name: builder
35
24
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- segments:
41
- - 0
42
- version: "0"
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: builder
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
43
39
  type: :runtime
44
- version_requirements: *id002
45
- - !ruby/object:Gem::Dependency
46
- name: mime-types
47
40
  prerelease: false
48
- requirement: &id003 !ruby/object:Gem::Requirement
49
- requirements:
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- segments:
53
- - 0
54
- version: "0"
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: mime-types
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
55
  type: :runtime
56
- version_requirements: *id003
57
- - !ruby/object:Gem::Dependency
58
- name: mail
59
56
  prerelease: false
60
- requirement: &id004 !ruby/object:Gem::Requirement
61
- requirements:
62
- - - ">"
63
- - !ruby/object:Gem::Version
64
- segments:
65
- - 2
66
- - 2
67
- - 5
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: mail
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>'
69
+ - !ruby/object:Gem::Version
68
70
  version: 2.2.5
69
71
  type: :runtime
70
- version_requirements: *id004
71
- - !ruby/object:Gem::Dependency
72
- name: shoulda-context
73
72
  prerelease: false
74
- requirement: &id005 !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- segments:
79
- - 0
80
- version: "0"
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>'
77
+ - !ruby/object:Gem::Version
78
+ version: 2.2.5
79
+ - !ruby/object:Gem::Dependency
80
+ name: shoulda-context
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
81
87
  type: :development
82
- version_requirements: *id005
83
- - !ruby/object:Gem::Dependency
84
- name: bundler
85
88
  prerelease: false
86
- requirement: &id006 !ruby/object:Gem::Requirement
87
- requirements:
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: bundler
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
88
100
  - - ~>
89
- - !ruby/object:Gem::Version
90
- segments:
91
- - 1
92
- - 0
93
- - 0
101
+ - !ruby/object:Gem::Version
94
102
  version: 1.0.0
95
103
  type: :development
96
- version_requirements: *id006
97
- - !ruby/object:Gem::Dependency
98
- name: jeweler
99
104
  prerelease: false
100
- requirement: &id007 !ruby/object:Gem::Requirement
101
- requirements:
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.0.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: jeweler
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
102
116
  - - ~>
103
- - !ruby/object:Gem::Version
104
- segments:
105
- - 1
106
- - 5
107
- - 2
117
+ - !ruby/object:Gem::Version
108
118
  version: 1.5.2
109
119
  type: :development
110
- version_requirements: *id007
111
- - !ruby/object:Gem::Dependency
112
- name: rcov
113
120
  prerelease: false
114
- requirement: &id008 !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- segments:
119
- - 0
120
- version: "0"
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: 1.5.2
127
+ - !ruby/object:Gem::Dependency
128
+ name: rcov
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
121
135
  type: :development
122
- version_requirements: *id008
123
- - !ruby/object:Gem::Dependency
124
- name: flexmock
125
136
  prerelease: false
126
- requirement: &id009 !ruby/object:Gem::Requirement
127
- requirements:
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: flexmock
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
128
148
  - - ~>
129
- - !ruby/object:Gem::Version
130
- segments:
131
- - 0
132
- - 8
133
- - 11
149
+ - !ruby/object:Gem::Version
134
150
  version: 0.8.11
135
151
  type: :development
136
- version_requirements: *id009
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ~>
157
+ - !ruby/object:Gem::Version
158
+ version: 0.8.11
137
159
  description: Client library for Amazon's Simple Email Service's REST API
138
160
  email: drew.blas@gmail.com
139
161
  executables: []
140
-
141
162
  extensions: []
142
-
143
- extra_rdoc_files:
163
+ extra_rdoc_files:
144
164
  - LICENSE
145
165
  - README.erb
146
166
  - README.rdoc
147
167
  - TODO
148
- files:
168
+ files:
149
169
  - .document
150
170
  - CHANGELOG
151
171
  - Gemfile
@@ -175,37 +195,32 @@ files:
175
195
  - test/mocks/fake_response.rb
176
196
  - test/response_test.rb
177
197
  - test/send_email_test.rb
178
- has_rdoc: true
179
198
  homepage: http://github.com/drewblas/aws-ses
180
- licenses:
199
+ licenses:
181
200
  - MIT
182
201
  post_install_message:
183
202
  rdoc_options: []
184
-
185
- require_paths:
203
+ require_paths:
186
204
  - lib
187
- required_ruby_version: !ruby/object:Gem::Requirement
188
- requirements:
189
- - - ">="
190
- - !ruby/object:Gem::Version
191
- segments:
192
- - 0
193
- version: "0"
194
- required_rubygems_version: !ruby/object:Gem::Requirement
195
- requirements:
196
- - - ">="
197
- - !ruby/object:Gem::Version
198
- segments:
199
- - 0
200
- version: "0"
205
+ required_ruby_version: !ruby/object:Gem::Requirement
206
+ none: false
207
+ requirements:
208
+ - - ! '>='
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ required_rubygems_version: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ! '>='
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
201
217
  requirements: []
202
-
203
218
  rubyforge_project:
204
- rubygems_version: 1.3.6
219
+ rubygems_version: 1.8.19
205
220
  signing_key:
206
221
  specification_version: 3
207
222
  summary: Client library for Amazon's Simple Email Service's REST API
208
- test_files:
223
+ test_files:
209
224
  - test/address_test.rb
210
225
  - test/base_test.rb
211
226
  - test/extensions_test.rb