pony 1.5.1 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +8 -1
  3. data/lib/pony.rb +44 -59
  4. data/pony.gemspec +10 -14
  5. data/spec/pony_spec.rb +19 -27
  6. metadata +10 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 98a39271d987be0cc8e7e5b6b8b2009a83e89a7f
4
- data.tar.gz: 5f1f182c96248255f4e012fe7a1cf1361ec63e5d
3
+ metadata.gz: b989ba61f81f34d5bbdc1f6053c3094b923b161b
4
+ data.tar.gz: 1e22e925f9798fd041a30788e58a86918a19b1b9
5
5
  SHA512:
6
- metadata.gz: b51ce4f8dadeabbbae7587f7d5d22f9885559cfbcaf6f984125e1d90bff9cc57d43bb2a5da4a91502ba1fd7c43e46bcfbd56c97cc2a086a7a17dd48dc08783f8
7
- data.tar.gz: e0e45fd94fcdcc495fe9b32ad0da341cc1cc290519c5667964a64188d094775910207814d9406fb787a226521564858987189920e0b96d6b7e910d29f88de8cf
6
+ metadata.gz: 8b6f8cb9c850970c1307a965b706673e12e5317614e097b8590406d2806cb0bebd32d44b57e538e4b30e4ac3f33b12c008fe5987fb3aec330ded706a44c0f7fa
7
+ data.tar.gz: 3efca87c016ffcccc4b77ea3f66da7b0ce5620fdb403ed8ed69bbe79f22b012d4a858caeedeb34394a47fb74c90e5190b9486566a6ba19b65f11949d187218c3
@@ -91,6 +91,7 @@ Options passed pretty much directly to Mail
91
91
  body # the plain text body
92
92
  html_body # for sending html-formatted email
93
93
  subject
94
+ content_type
94
95
  charset # In case you need to send in utf-8 or similar
95
96
  text_part_charset # for multipart messages, set the charset of the text part
96
97
  attachments # see Attachments section above
@@ -98,6 +99,7 @@ Options passed pretty much directly to Mail
98
99
  message_id
99
100
  sender # Sets "envelope from" (and the Sender header)
100
101
  reply_to
102
+ smtp_envelope_to
101
103
 
102
104
  Other options
103
105
  via # :smtp or :sendmail, see Transport section above
@@ -113,7 +115,9 @@ Default options can be set so that they don't have to be repeated. The default o
113
115
 
114
116
  == Help
115
117
 
116
- If you need help using Pony, or it looks like you've found a bug, we have a google group setup at: ponyrb@googlegroups.com.
118
+ If you need help using Pony, or it looks like you've found a bug,
119
+ email ponyrb@googlegroups.com. The full forum is
120
+ https://groups.google.com/forum/#!forum/ponyrb
117
121
 
118
122
  == External Dependencies
119
123
 
@@ -148,6 +152,9 @@ mailing list: ponyrb@googlegroups.com
148
152
 
149
153
 
150
154
  == Releases
155
+ 1.6
156
+ * Unknown options are passed directly to mail to handle. Remove deprecated syntax
157
+
151
158
  1.5.1
152
159
  * Loosen mail dependency to >= 2.0 instead of > 2.0
153
160
 
@@ -125,13 +125,11 @@ module Pony
125
125
  # Pony.mail(:to => 'you@example.com', :cc => 'him@example.com', :from => 'me@example.com', :subject => 'hi', :body => 'Howsit!')
126
126
  def self.mail(options)
127
127
  options = @@options.merge options
128
- raise(ArgumentError, ":to is required") unless options[:to]
128
+ fail ArgumentError, ':to is required' unless options[:to]
129
129
 
130
- options[:via] = default_delivery_method unless options.has_key?(:via)
130
+ options[:via] = default_delivery_method unless options.key?(:via)
131
131
 
132
- options = cross_reference_depricated_fields(options)
133
-
134
- if options.has_key?(:via) && options[:via] == :sendmail
132
+ if options.key?(:via) && options[:via] == :sendmail
135
133
  options[:via_options] ||= {}
136
134
  options[:via_options][:location] ||= sendmail_binary
137
135
  end
@@ -141,28 +139,6 @@ module Pony
141
139
 
142
140
  private
143
141
 
144
- def self.cross_reference_depricated_fields(options)
145
- if options.has_key?(:smtp)
146
- warn depricated_message(:smtp, :via_options)
147
- options[:via_options] = options.delete(:smtp)
148
- end
149
-
150
- # cross-reference pony options to be compatible with keys mail expects
151
- { :host => :address, :user => :user_name, :auth => :authentication, :tls => :enable_starttls_auto }.each do |key, val|
152
- if options[:via_options] && options[:via_options].has_key?(key)
153
- warn depricated_message(key, val)
154
- options[:via_options][val] = options[:via_options].delete(key)
155
- end
156
- end
157
-
158
- if options[:content_type] && options[:content_type] =~ /html/ && !options[:html_body]
159
- warn depricated_message(:content_type, :html_body)
160
- options[:html_body] = options[:body]
161
- end
162
-
163
- return options
164
- end
165
-
166
142
  def self.deliver(mail)
167
143
  mail.deliver!
168
144
  end
@@ -172,16 +148,27 @@ module Pony
172
148
  end
173
149
 
174
150
  def self.build_mail(options)
175
- mail = Mail.new do
176
- to options[:to]
177
- from options[:from] || 'pony@unknown'
178
- cc options[:cc]
179
- reply_to options[:reply_to]
180
- bcc options[:bcc]
181
- subject options[:subject]
182
- date options[:date] || Time.now
183
- message_id options[:message_id]
184
- sender options[:sender] if options[:sender]
151
+ mail = Mail.new do |m|
152
+ options[:date] ||= Time.now
153
+ options[:from] ||= 'pony@unknown'
154
+ options[:via_options] ||= {}
155
+
156
+ non_standard_options = [
157
+ :attachments,
158
+ :body,
159
+ :charset,
160
+ :enable_starttls_auto,
161
+ :headers,
162
+ :html_body,
163
+ :text_part_charset,
164
+ :via,
165
+ :via_options,
166
+ ]
167
+
168
+ options.each do |k, v|
169
+ next if non_standard_options.include?(k)
170
+ m.send(k, v)
171
+ end
185
172
 
186
173
  if options[:html_body]
187
174
  html_part do
@@ -190,8 +177,8 @@ module Pony
190
177
  end
191
178
  end
192
179
 
193
- # If we're using attachments, the body needs to be a separate part. If not,
194
- # we can just set the body directly.
180
+ # If we're using attachments, the body needs to be a separate
181
+ # part. If not, we can just set the body directly.
195
182
  if options[:body] && (options[:html_body] || options[:attachments])
196
183
  text_part do
197
184
  body options[:body]
@@ -200,26 +187,15 @@ module Pony
200
187
  body options[:body]
201
188
  end
202
189
 
203
- delivery_method options[:via], (options.has_key?(:via_options) ? options[:via_options] : {})
204
- end
205
-
206
- (options[:attachments] || []).each do |name, body|
207
- # mime-types wants to send these as "quoted-printable"
208
- if name =~ /\.xlsx$/
209
- mail.attachments[name] = {
210
- :content => Base64.encode64(body),
211
- :transfer_encoding => :base64
212
- }
213
- else
214
- mail.attachments[name] = body
215
- end
216
- mail.attachments[name].add_content_id("<#{name}@#{Socket.gethostname}>")
190
+ delivery_method options[:via], options[:via_options]
217
191
  end
218
192
 
219
193
  (options[:headers] ||= {}).each do |key, value|
220
194
  mail[key] = value
221
195
  end
222
196
 
197
+ add_attachments(mail, options[:attachments]) if options[:attachments]
198
+
223
199
  mail.charset = options[:charset] if options[:charset] # charset must be set after setting content_type
224
200
 
225
201
  if mail.multipart? && options[:text_part_charset]
@@ -229,14 +205,23 @@ module Pony
229
205
  mail
230
206
  end
231
207
 
208
+ def self.add_attachments(mail, attachments)
209
+ attachments.each do |name, body|
210
+ # mime-types wants to send these as "quoted-printable"
211
+ if name =~ /\.xlsx$/
212
+ mail.attachments[name] = {
213
+ content: Base64.encode64(body),
214
+ transfer_encoding: :base64
215
+ }
216
+ else
217
+ mail.attachments[name] = body
218
+ end
219
+ mail.attachments[name].add_content_id("<#{name}@#{Socket.gethostname}>")
220
+ end
221
+ end
222
+
232
223
  def self.sendmail_binary
233
224
  sendmail = `which sendmail`.chomp
234
225
  sendmail.empty? ? '/usr/sbin/sendmail' : sendmail
235
226
  end
236
-
237
- def self.depricated_message(method, alternative)
238
- warning_message = "warning: '#{method}' is deprecated"
239
- warning_message += "; use '#{alternative}' instead." if alternative
240
- return warning_message
241
- end
242
227
  end
@@ -1,23 +1,19 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  Gem::Specification.new do |s|
4
- s.name = %q{pony}
5
- s.version = "1.5.1"
4
+ s.name = 'pony'
5
+ s.version = "1.6.1"
6
6
 
7
- s.description = "Send email in one command: Pony.mail(:to => 'someone@example.com', :body => 'hello')"
8
- s.summary = s.description
9
- s.authors = ["Adam Wiggins", "maint: Ben Prew"]
10
- s.email = %q{ben.prew@gmail.com}
11
- s.homepage = %q{http://github.com/benprew/pony}
12
- s.rubyforge_project = "pony"
7
+ s.summary = "Send email in one command: Pony.mail(:to => 'someone@example.com', :body => 'hello')Pony, the express way to send email in Ruby"
8
+ s.description = s.summary
9
+ s.authors = ["Adam Wiggins", "Ben Prew"]
10
+ s.email = 'ben@throwingbones.com'
11
+ s.homepage = 'http://github.com/benprew/pony'
12
+ s.license = 'MIT'
13
13
 
14
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
15
14
  s.files = ["README.rdoc", "Rakefile", "pony.gemspec" ] + Dir.glob("{lib,spec}/**/*")
16
- s.has_rdoc = false
17
15
  s.rdoc_options = ["--inline-source", "--charset=UTF-8"]
18
16
  s.require_paths = ["lib"]
19
- s.rubygems_version = %q{1.3.1}
20
- s.add_dependency 'mail', '>= 2.0'
21
- s.add_development_dependency "rspec", ">= 2.0.0"
22
- s.platform = Gem::Platform::RUBY
17
+ s.add_runtime_dependency 'mail', '>= 2.0'
18
+ s.add_development_dependency "rspec", ">= 2.0.0"
23
19
  end
@@ -25,30 +25,19 @@ describe Pony do
25
25
  lambda { Pony.mail(:to => 'joe@example.com') }.should_not raise_error
26
26
  end
27
27
 
28
- it "should handle depricated options gracefully" do
29
- Pony.should_receive(:build_mail).with(hash_including(:via_options => {:address => 'test'}))
30
- Pony.mail(:to => 'foo@bar', :smtp => { :host => 'test' }, :via => :smtp)
31
- end
32
-
33
- it "should handle depricated content-type gracefully" do
34
- Pony.should_receive(:build_mail).with(hash_including(:html_body => "this is <h1>HTML</h1>"))
35
- Pony.mail(:to => 'foo@bar', :content_type => 'text/html', :body => 'this is <h1>HTML</h1>')
36
- end
37
- ####################
38
-
39
28
  describe "builds a Mail object with field:" do
40
29
  it "to" do
41
30
  Pony.build_mail(:to => 'joe@example.com').to.should == [ 'joe@example.com' ]
42
31
  end
43
-
32
+
44
33
  it "to with multiple recipients" do
45
34
  Pony.build_mail(:to => 'joe@example.com, friedrich@example.com').to.should == [ 'joe@example.com', 'friedrich@example.com' ]
46
35
  end
47
-
36
+
48
37
  it "to with multiple recipients and names" do
49
38
  Pony.build_mail(:to => 'joe@example.com, "Friedrich Hayek" <friedrich@example.com>').to.should == [ 'joe@example.com', 'friedrich@example.com' ]
50
39
  end
51
-
40
+
52
41
  it "to with multiple recipients and names in an array" do
53
42
  Pony.build_mail(:to => ['joe@example.com', '"Friedrich Hayek" <friedrich@example.com>']).to.should == [ 'joe@example.com', 'friedrich@example.com' ]
54
43
  end
@@ -56,11 +45,11 @@ describe Pony do
56
45
  it "cc" do
57
46
  Pony.build_mail(:cc => 'joe@example.com').cc.should == [ 'joe@example.com' ]
58
47
  end
59
-
48
+
60
49
  it "reply_to" do
61
50
  Pony.build_mail(:reply_to => 'joe@example.com').reply_to.should == [ 'joe@example.com' ]
62
- end
63
-
51
+ end
52
+
64
53
  it "cc with multiple recipients" do
65
54
  Pony.build_mail(:cc => 'joe@example.com, friedrich@example.com').cc.should == [ 'joe@example.com', 'friedrich@example.com' ]
66
55
  end
@@ -88,8 +77,8 @@ describe Pony do
88
77
  end
89
78
 
90
79
  it "default charset" do
91
- Pony.build_mail(:body => 'body').charset.should == 'UTF-8'
92
- Pony.build_mail(:body => 'body', :content_type => 'text/html').charset.should == 'UTF-8'
80
+ Pony.build_mail(body: 'body').charset.should eq 'UTF-8'
81
+ Pony.build_mail(html_body: 'body').charset.should eq 'UTF-8'
93
82
  end
94
83
 
95
84
  it "from (default)" do
@@ -101,12 +90,20 @@ describe Pony do
101
90
  end
102
91
 
103
92
  it "body" do
104
- Pony.build_mail(:body => 'What do you know, Joe?').body.should == 'What do you know, Joe?'
93
+ Pony.build_mail(body: 'What do you know, Joe?').body.should
94
+ eq 'What do you know, Joe?'
105
95
  end
106
96
 
107
97
  it "html_body" do
108
- Pony.build_mail(:html_body => 'What do you know, Joe?').parts.first.body.should == 'What do you know, Joe?'
109
- Pony.build_mail(:html_body => 'What do you know, Joe?').parts.first.content_type.should == 'text/html; charset=UTF-8'
98
+ Pony.build_mail(html_body: 'What do you know, Joe?').parts.first.body.should
99
+ eq 'What do you know, Joe?'
100
+ Pony.build_mail(html_body: 'What do you know, Joe?').parts.first.content_type.should
101
+ eq 'text/html; charset=UTF-8'
102
+ end
103
+
104
+ it 'content_type' do
105
+ Pony.build_mail(content_type: 'multipart/related').content_type.should
106
+ eq 'multipart/related'
110
107
  end
111
108
 
112
109
  it "date" do
@@ -114,11 +111,6 @@ describe Pony do
114
111
  Pony.build_mail(:date => now).date.should == DateTime.parse(now.to_s)
115
112
  end
116
113
 
117
- it "content_type of html should set html_body" do
118
- Pony.should_receive(:build_mail).with(hash_including(:html_body => '<h1>test</h1>'))
119
- Pony.mail(:to => 'foo@bar', :content_type => 'text/html', :body => '<h1>test</h1>')
120
- end
121
-
122
114
  it "message_id" do
123
115
  Pony.build_mail(:message_id => '<abc@def.com>').message_id.should == 'abc@def.com'
124
116
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pony
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Wiggins
8
- - 'maint: Ben Prew'
8
+ - Ben Prew
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-11 00:00:00.000000000 Z
12
+ date: 2013-11-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mail
@@ -40,8 +40,8 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: 2.0.0
42
42
  description: 'Send email in one command: Pony.mail(:to => ''someone@example.com'',
43
- :body => ''hello'')'
44
- email: ben.prew@gmail.com
43
+ :body => ''hello'')Pony, the express way to send email in Ruby'
44
+ email: ben@throwingbones.com
45
45
  executables: []
46
46
  extensions: []
47
47
  extra_rdoc_files: []
@@ -53,7 +53,8 @@ files:
53
53
  - spec/base.rb
54
54
  - spec/pony_spec.rb
55
55
  homepage: http://github.com/benprew/pony
56
- licenses: []
56
+ licenses:
57
+ - MIT
57
58
  metadata: {}
58
59
  post_install_message:
59
60
  rdoc_options:
@@ -72,10 +73,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
73
  - !ruby/object:Gem::Version
73
74
  version: '0'
74
75
  requirements: []
75
- rubyforge_project: pony
76
- rubygems_version: 2.0.0
76
+ rubyforge_project:
77
+ rubygems_version: 2.0.3
77
78
  signing_key:
78
79
  specification_version: 4
79
80
  summary: 'Send email in one command: Pony.mail(:to => ''someone@example.com'', :body
80
- => ''hello'')'
81
+ => ''hello'')Pony, the express way to send email in Ruby'
81
82
  test_files: []