aws-ses 0.4.4 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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