gmail_sender 1.0.0 → 1.1.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/README.rdoc CHANGED
@@ -9,6 +9,7 @@ A simple gem to send email through gmail
9
9
  g.attach('/path/to/document.hz') # you can attach any number of files, but there are limits for total attachments size
10
10
  g.send(:to => "someone@domain.com", :subject => "The subject", :content => "The mail body")
11
11
 
12
+ Notice that the ':to' key accepts an email array so you can send the message to many receivers.
12
13
  You can specify the content type which is text/plain by default.
13
14
 
14
15
  g.send(:to => "someone@domain.com",
@@ -38,7 +39,7 @@ To send your directory list to the default receiver:
38
39
 
39
40
  You can specify some parameters like in this example which doesn't use pipes:
40
41
 
41
- gmail -t somebody@gmail.com -s "This is the subject" -c "This is the email content"
42
+ gmail -t somebody@gmail.com someoneelse@hotmail.com -s "This is the subject" -c "This is the email content"
42
43
 
43
44
  You can send attachments by using the -a option (this example assumes that you have a receiver_email set in the ~/.gmail file so the -t is not needed):
44
45
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
data/bin/gmail CHANGED
@@ -10,8 +10,8 @@ Choice.options do
10
10
 
11
11
  option :receiver_email do
12
12
  short '-t'
13
- long '--to=RECEIVER'
14
- desc 'Receiver of the email'
13
+ long '--to=*RECEIVERS'
14
+ desc 'A list of space separated receiver emails'
15
15
  end
16
16
 
17
17
  option :subject do
@@ -32,12 +32,11 @@ Choice.options do
32
32
  desc 'Content Type, text/plain by default, use text/html for html'
33
33
  end
34
34
 
35
- option :attachments do
35
+ option :attachments do
36
36
  short '-a'
37
37
  long '--attachments *ATTACHMENTS'
38
38
  desc "A list of space separated list of files you wish to attach."
39
39
  end
40
-
41
40
  end
42
41
 
43
42
  def params
data/gmail_sender.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{gmail_sender}
8
- s.version = "1.0.0"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Daniel Cadenas"]
12
- s.date = %q{2010-02-28}
12
+ s.date = %q{2010-04-12}
13
13
  s.default_executable = %q{gmail}
14
14
  s.email = %q{dcadenas@gmail.com}
15
15
  s.executables = ["gmail"]
data/lib/gmail_sender.rb CHANGED
@@ -21,16 +21,15 @@ class GmailSender
21
21
  @message_stream_writer.attachments << file if File.exist?(file)
22
22
  end
23
23
 
24
- def send(options = {})
25
- to = options[:to]
24
+ def send(options = {})
25
+ raise(Error, "Missing receiver (:to => 'someone@somehost.com')") if Utils.blank?(options[:to])
26
+ to = [options[:to]].flatten
26
27
  subject = options[:subject] || ""
27
28
  content = options[:content] || ""
28
29
  content_type = options[:content_type] || "text/plain; charset='utf-8'"
29
30
 
30
- raise(Error, "Missing receiver (:to => 'someone@somehost.com')") if Utils.blank?(to)
31
-
32
31
  @net_smtp.start(@sender_domain, @sender_email, @sender_password, :plain) do |smtp|
33
- smtp.open_message_stream(@sender_email, [to]) do |msg_stream|
32
+ smtp.open_message_stream(@sender_email, to) do |msg_stream|
34
33
  @message_stream_writer.write(msg_stream, to, subject, content, content_type)
35
34
  end
36
35
  end
@@ -19,11 +19,12 @@ class GmailSender
19
19
  private
20
20
  def write_headers(msg_stream, to, subject)
21
21
  msg_stream.puts "From: #{@sender_email}"
22
+ to = to.join(",") if to.respond_to?(:join)
22
23
  msg_stream.puts "To: #{to}"
23
24
  msg_stream.puts "Subject: #{subject}"
24
25
  msg_stream.puts 'MIME-Version: 1.0'
25
26
  unless @attachments.empty?
26
- msg_stream.puts %{Content-Type: multipart/mixed; boundary="#{@boundary}"}
27
+ msg_stream.puts %{Content-Type: multipart/mixed; boundary="#{@boundary}"}
27
28
  end
28
29
  end
29
30
 
@@ -1,7 +1,9 @@
1
1
  class GmailSender
2
2
  module Utils
3
- def self.blank?(string)
4
- string.nil? || string.strip == ""
3
+ def self.blank?(string_or_array)
4
+ string_or_array.nil? ||
5
+ string_or_array.respond_to?(:strip) && string_or_array.strip == "" ||
6
+ string_or_array.respond_to?(:empty?) && string_or_array.empty?
5
7
  end
6
8
  end
7
9
  end
@@ -35,6 +35,12 @@ Expectations do
35
35
  FakedNetSMTP.sent_email
36
36
  end
37
37
 
38
+ expect "From: me@somehost.com\nTo: someone@someotherhost.com,someone2@someotherhost.com\nSubject: hi!\nMIME-Version: 1.0\nContent-Type: text/plain; charset='utf-8'\n\nho\n" do
39
+ gmail_sender = GmailSender.new("me@somehost.com", "password", FakedNetSMTP)
40
+ gmail_sender.send(:to => ["someone@someotherhost.com", "someone2@someotherhost.com"], :subject => "hi!", :content => "ho")
41
+ FakedNetSMTP.sent_email
42
+ end
43
+
38
44
  expect GmailSender::Error do
39
45
  gmail_sender = GmailSender.new("me@somehost.com", "password", FakedNetSMTP)
40
46
  gmail_sender.send(:subject => "hi!", :content => "ho")
@@ -8,6 +8,13 @@ Expectations do
8
8
  string_io.string
9
9
  end
10
10
 
11
+ expect "From: sender@gmail.com\nTo: to@gmail.com,to2@gmail.com\nSubject: subject\nMIME-Version: 1.0\nContent-Type: text/plain\n\nbody\n" do
12
+ string_io = StringIO.new
13
+ message_stream_writer = GmailSender::MessageStreamWriter.new("sender@gmail.com")
14
+ message_stream_writer.write(string_io, ["to@gmail.com", "to2@gmail.com"], "subject", "body", "text/plain")
15
+ string_io.string
16
+ end
17
+
11
18
  expect eval(<<-MAIL_WITH_ATTACHMENT_REGEXP) do
12
19
  /From: sender@gmail.com
13
20
  To: to@gmail.com
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 1
7
+ - 1
7
8
  - 0
8
- - 0
9
- version: 1.0.0
9
+ version: 1.1.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Daniel Cadenas
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-02-28 00:00:00 -02:00
17
+ date: 2010-04-12 00:00:00 -03:00
18
18
  default_executable: gmail
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency