notes_mailer 0.0.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.
- data/CHANGELOG.rdoc +8 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +65 -0
- data/lib/notes_mailer.rb +189 -0
- data/notes_mailer.gemspec +30 -0
- data/test/mock/win32ole/win32ole.rb +112 -0
- data/test/test_notes_mailer.rb +26 -0
- metadata +96 -0
data/CHANGELOG.rdoc
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009, 2010 Elias Kugler
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
= NotesMailer
|
2
|
+
|
3
|
+
Small gem that uses IBM Lotus Notes to deliver your e-mails.
|
4
|
+
|
5
|
+
== Installation
|
6
|
+
|
7
|
+
# gem install notes_mailer
|
8
|
+
|
9
|
+
== Usage
|
10
|
+
require 'rubygems'
|
11
|
+
require 'notes_mailer'
|
12
|
+
|
13
|
+
Mail.defaults do
|
14
|
+
delivery_method Mail::NotesMailer, {
|
15
|
+
:address => "", # your Notes-Server adress
|
16
|
+
# "" or default if you are using a local database
|
17
|
+
:user_name => '<username>',
|
18
|
+
:password => '<password>',
|
19
|
+
:db => '<database>'}
|
20
|
+
end
|
21
|
+
|
22
|
+
Mail.deliver do
|
23
|
+
to 'mikel@test.lindsaar.net'
|
24
|
+
subject 'testing notes_mailer'
|
25
|
+
body 'testing notes_mailer'
|
26
|
+
add_file 'c:/path/to/file.txt'
|
27
|
+
end
|
28
|
+
|
29
|
+
== Prerequisites
|
30
|
+
|
31
|
+
1. Ruby 1.8.6 or later
|
32
|
+
2. IBM Lotus Notes
|
33
|
+
|
34
|
+
== Supported Platforms
|
35
|
+
|
36
|
+
This library is supported on Windows 2000 or later.
|
37
|
+
|
38
|
+
==Used libs:
|
39
|
+
* win32ole
|
40
|
+
* mail
|
41
|
+
* log4r
|
42
|
+
...
|
43
|
+
|
44
|
+
== Licence/Copyright
|
45
|
+
|
46
|
+
Copyright (c) 2010 Elias Kugler
|
47
|
+
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
49
|
+
a copy of this software and associated documentation files (the
|
50
|
+
"Software"), to deal in the Software without restriction, including
|
51
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
52
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
53
|
+
permit persons to whom the Software is furnished to do so, subject to
|
54
|
+
the following conditions:
|
55
|
+
|
56
|
+
The above copyright notice and this permission notice shall be
|
57
|
+
included in all copies or substantial portions of the Software.
|
58
|
+
|
59
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
60
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
61
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
62
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
63
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
64
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
65
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/lib/notes_mailer.rb
ADDED
@@ -0,0 +1,189 @@
|
|
1
|
+
require 'mail'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'log4r'
|
4
|
+
|
5
|
+
module Mail
|
6
|
+
|
7
|
+
# == Sending Email with NotesMailer
|
8
|
+
#
|
9
|
+
# NotesMailer allows you to send emails using IBM Lotus Notes. This is done by wrapping the Lotus Notes-win32ole-api.
|
10
|
+
# The usage is very similar to the SMTP devlivery method in the mail gem.
|
11
|
+
#
|
12
|
+
# require 'rubygems'
|
13
|
+
# require 'notes_mailer'
|
14
|
+
#
|
15
|
+
# Mail.defaults do
|
16
|
+
# delivery_method Mail::NotesMailer, { :address => "",
|
17
|
+
# :user_name => '<username>',
|
18
|
+
# :password => '<password>',
|
19
|
+
# :db => '<database>'}
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# === Delivering the email (from smtp.rb)
|
23
|
+
#
|
24
|
+
# Once you have the settings right, sending the email is done by:
|
25
|
+
#
|
26
|
+
# Mail.deliver do
|
27
|
+
# to 'mikel@test.lindsaar.net'
|
28
|
+
# from 'ada@test.lindsaar.net'
|
29
|
+
# subject 'testing sendmail'
|
30
|
+
# body 'testing sendmail'
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# Or by calling deliver on a Mail message
|
34
|
+
#
|
35
|
+
# mail = Mail.new do
|
36
|
+
# to 'mikel@test.lindsaar.net'
|
37
|
+
# from 'ada@test.lindsaar.net'
|
38
|
+
# subject 'testing sendmail'
|
39
|
+
# body 'testing sendmail'
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# mail.deliver!
|
43
|
+
class Message
|
44
|
+
alias old_initialize initialize
|
45
|
+
attr_reader :files_to_attach
|
46
|
+
def initialize(*args, &block)
|
47
|
+
@files_to_attach = []
|
48
|
+
old_initialize(*args, &block)
|
49
|
+
end
|
50
|
+
def add_file(filename)
|
51
|
+
raise "Parameter must be a string" unless filename.is_a?String
|
52
|
+
raise "File '#{filename}' does not exists" unless File.exists?(filename)
|
53
|
+
@files_to_attach << filename
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
class NotesMailer
|
58
|
+
@@logger = nil
|
59
|
+
# Provides a store of all the emails
|
60
|
+
def NotesMailer.deliveries
|
61
|
+
@@deliveries ||= []
|
62
|
+
end
|
63
|
+
|
64
|
+
def NotesMailer.deliveries=(val)
|
65
|
+
@@deliveries = val
|
66
|
+
end
|
67
|
+
|
68
|
+
# NotesMailer supports the following settings:
|
69
|
+
# Mandatory:
|
70
|
+
# :user_name ... Lotus Notes user
|
71
|
+
# :db ... Latus Notes database
|
72
|
+
# Optional
|
73
|
+
# :password ... Latus Notes password
|
74
|
+
# :adress ... Adress of your Lotus Notes Server, emty if you are using a local database
|
75
|
+
# ::mock_win32ole => true ... test without using Lotus Notes
|
76
|
+
# :logger => true, ... use logger
|
77
|
+
# :debug => true ...
|
78
|
+
def initialize(values)
|
79
|
+
self.settings = { :adress => '', #server is localhost
|
80
|
+
:password => ''
|
81
|
+
}.merge(values)
|
82
|
+
|
83
|
+
|
84
|
+
#raise "Notes password missing" unless settings[:password]
|
85
|
+
raise "Notes db missing" unless settings[:db]
|
86
|
+
raise "Notes user_name missing" unless settings[:user_name]
|
87
|
+
|
88
|
+
if settings[:mock_win32ole]
|
89
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../test/mock/win32ole'
|
90
|
+
end
|
91
|
+
require 'win32ole'
|
92
|
+
|
93
|
+
if settings[:logger] and !@@logger
|
94
|
+
NotesMailer.init_logger(settings[:debug])
|
95
|
+
end
|
96
|
+
|
97
|
+
log_debug "--- settings --- "
|
98
|
+
log_debug settings
|
99
|
+
|
100
|
+
s = WIN32OLE.new 'Lotus.NotesSession'
|
101
|
+
s.Initialize(settings[:password])
|
102
|
+
|
103
|
+
@notes_db = s.GetDatabase(settings[:adress], settings[:db])
|
104
|
+
raise "Cannot open #{settings[:db]}" unless @notes_db.IsOpen()
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
attr_accessor :settings
|
109
|
+
|
110
|
+
def deliver!(mail)
|
111
|
+
#Mail::NotesMailer.deliveries << mail
|
112
|
+
|
113
|
+
destinations ||= mail.destinations if mail.respond_to?(:destinations) && mail.destinations
|
114
|
+
if destinations.blank?
|
115
|
+
raise ArgumentError.new('At least one recipient (To, Cc or Bcc) is required to send a message')
|
116
|
+
end
|
117
|
+
|
118
|
+
log_debug "--- log mail ---"
|
119
|
+
log_debug "destinations : "
|
120
|
+
log_debug destinations
|
121
|
+
log_debug "mail to : "
|
122
|
+
log_debug mail.to
|
123
|
+
log_debug "mail cc : "
|
124
|
+
log_debug mail.cc
|
125
|
+
log_debug "mail bcc : "
|
126
|
+
log_debug mail.bcc
|
127
|
+
log_debug "mail subject : "
|
128
|
+
log_debug mail.subject
|
129
|
+
log_debug "mail body : "
|
130
|
+
log_debug mail.body.to_s
|
131
|
+
log_debug "--- end ---"
|
132
|
+
|
133
|
+
new_mail = @notes_db.CreateDocument
|
134
|
+
new_mail.replaceItemValue("Form",'Memo')
|
135
|
+
new_mail.replaceItemValue("SendTo",mail.to)
|
136
|
+
new_mail.replaceItemValue("CopyTo",mail.cc)
|
137
|
+
new_mail.replaceItemValue("BlindCopyTo",mail.bcc)
|
138
|
+
new_mail.replaceItemValue("Subject",mail.subject)
|
139
|
+
|
140
|
+
#new_mail.replaceItemValue("Body", mail.body.to_s)
|
141
|
+
rti = new_mail.CreateRichTextItem("Body")
|
142
|
+
rti.AppendText( mail.body.to_s)
|
143
|
+
rti.AddNewLine()
|
144
|
+
rti.AppendText( "\nfrom #{mail.from.to_s}\n") if mail.from.to_s.size > 0
|
145
|
+
log_debug("\nfrom #{mail.from.to_s}\n") if mail.from.to_s.size > 0
|
146
|
+
|
147
|
+
mail.files_to_attach.each do |filename|
|
148
|
+
log_debug "attach: " + filename
|
149
|
+
# EMBED_ATTACHMENT (1454), EMBED_OBJECT (1453), EMBED_OBJECTLINK (1452)
|
150
|
+
rti.EmbedObject(1454,File.basename(filename),filename) # 1454 == EMBED_ATTACHMENT
|
151
|
+
end
|
152
|
+
new_mail.Send(0)
|
153
|
+
|
154
|
+
self
|
155
|
+
end
|
156
|
+
|
157
|
+
def NotesMailer.init_logger(debug)
|
158
|
+
FileUtils::mkdir_p("#{Dir.pwd}/log")
|
159
|
+
@@logger = Log4r::Logger.new("notes_mailer_logger")
|
160
|
+
|
161
|
+
if debug
|
162
|
+
puts "see logfile: #{Dir.pwd}/log/notes_mailer.log"
|
163
|
+
log_level = Log4r::DEBUG
|
164
|
+
else
|
165
|
+
log_level = Log4r::INFO
|
166
|
+
end
|
167
|
+
|
168
|
+
Log4r::FileOutputter.new('logfile',
|
169
|
+
:filename=>"#{Dir.pwd}/log/notes_mailer.log",
|
170
|
+
:trunc=>false,
|
171
|
+
:level=> log_level)
|
172
|
+
|
173
|
+
@@logger.add('logfile')
|
174
|
+
|
175
|
+
end
|
176
|
+
def log_info(*args, &block)
|
177
|
+
if @@logger
|
178
|
+
@@logger.info(*args, &block)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
def log_debug(*args, &block)
|
182
|
+
if @@logger
|
183
|
+
p args
|
184
|
+
@@logger.debug(*args, &block)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
189
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
|
3
|
+
spec = Gem::Specification.new do |s|
|
4
|
+
s.name = %q{notes_mailer}
|
5
|
+
s.version = "0.0.1"
|
6
|
+
s.authors = ["Elias Kugler"]
|
7
|
+
s.email = %q{groesser3@gmail.com}
|
8
|
+
s.files = Dir["lib/**/*"] + Dir["bin/**/*"] + Dir["test/**/*"]+ Dir["*.rb"] + ["MIT-LICENSE","notes_mailer.gemspec"]
|
9
|
+
s.platform = Gem::Platform::RUBY
|
10
|
+
s.has_rdoc = true
|
11
|
+
s.extra_rdoc_files = ["README.rdoc", "CHANGELOG.rdoc"]
|
12
|
+
s.require_paths = ["lib"]
|
13
|
+
s.summary = %q{Small gem that uses IBM Lotus Notes to deliver your e-mails.}
|
14
|
+
s.description = %q{NotesMailer allows you to send emails using your local IBM Lotus Notes installation. It is implemented by wrapping the Lotus Notes-win32ole-api as a custom delivery method for Mail. The usage is very similar to the SMTP delivery method in the popular Mail-gem.}
|
15
|
+
s.files.reject! { |fn| fn.include? "CVS" }
|
16
|
+
s.require_path = "lib"
|
17
|
+
#s.default_executable = %q{}
|
18
|
+
#s.executables = [""]
|
19
|
+
s.homepage = %q{http://rubyforge.org/projects/notesmailer/}
|
20
|
+
s.rubyforge_project = %q{notesmailer}
|
21
|
+
s.add_dependency("mail", ">= 2.2.1")
|
22
|
+
s.add_dependency("log4r", ">=1.0.5")
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
if $0 == __FILE__
|
28
|
+
Gem.manage_gems
|
29
|
+
Gem::Builder.new(spec).build
|
30
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'log4r'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
# mock
|
5
|
+
class NotesValues
|
6
|
+
def initialize(arr=[])
|
7
|
+
@arr=arr
|
8
|
+
end
|
9
|
+
def Values
|
10
|
+
@arr
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class NotesDocument
|
15
|
+
attr_accessor :uid, :deleted, :notes_values
|
16
|
+
def initialize
|
17
|
+
@deleted = false
|
18
|
+
@notes_values = {}
|
19
|
+
end
|
20
|
+
def UniversalID
|
21
|
+
return @uid
|
22
|
+
end
|
23
|
+
def GetFirstItem(key)
|
24
|
+
@notes_values[key]
|
25
|
+
end
|
26
|
+
def LastModified
|
27
|
+
'2009-12-02T16:01:21+00:00'
|
28
|
+
end
|
29
|
+
def IsDeleted
|
30
|
+
@deleted
|
31
|
+
end
|
32
|
+
def replaceItemValue(key, value)
|
33
|
+
@notes_values[key] = value
|
34
|
+
end
|
35
|
+
def Send(para)
|
36
|
+
|
37
|
+
end
|
38
|
+
def CreateRichTextItem(name)
|
39
|
+
CreateRichTextItem.new(name)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class CreateRichTextItem
|
44
|
+
def initialize(name)
|
45
|
+
end
|
46
|
+
def AppendText(text)
|
47
|
+
end
|
48
|
+
def AddNewLine()
|
49
|
+
end
|
50
|
+
def EmbedObject(type, name, filename)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class NotesView
|
55
|
+
def initialize
|
56
|
+
@cursor = -1
|
57
|
+
@elements = []
|
58
|
+
end
|
59
|
+
|
60
|
+
def GetLastDocument
|
61
|
+
if @elements.size == 0
|
62
|
+
return false
|
63
|
+
else
|
64
|
+
@cursor = @elements.size-1
|
65
|
+
return @elements[@cursor]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
def GetPrevDocument(entry)
|
69
|
+
@cursor -= 1
|
70
|
+
if @cursor < 0
|
71
|
+
return false
|
72
|
+
else
|
73
|
+
return @elements[@cursor]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
class NotesDB
|
79
|
+
def initialize(db)
|
80
|
+
end
|
81
|
+
def GetView(view)
|
82
|
+
NotesView.new
|
83
|
+
end
|
84
|
+
def isOpen
|
85
|
+
true
|
86
|
+
end
|
87
|
+
def CreateDocument
|
88
|
+
NotesDocument.new
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
class WIN32OLE # NotesSession
|
94
|
+
def initialize(app)
|
95
|
+
end
|
96
|
+
def Initialize(pwd)
|
97
|
+
end
|
98
|
+
def GetDatabase(server, db)
|
99
|
+
NotesDB.new(db)
|
100
|
+
end
|
101
|
+
def WIN32OLE.init_logger
|
102
|
+
FileUtils::mkdir_p("#{Dir.pwd}/log")
|
103
|
+
@@logger = Log4r::Logger.new("win32ole_logger")
|
104
|
+
Log4r::FileOutputter.new('win32ole_log',
|
105
|
+
:filename=>"#{Dir.pwd}/log/win32ole.log",
|
106
|
+
:trunc=>false,
|
107
|
+
:level=>Log4r::INFO)
|
108
|
+
@@logger.add('win32ole_log')
|
109
|
+
end
|
110
|
+
WIN32OLE.init_logger
|
111
|
+
|
112
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
$:.unshift '../lib'
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'notes_mailer'
|
5
|
+
|
6
|
+
Mail.defaults do
|
7
|
+
delivery_method Mail::NotesMailer, { :adress => "", # local database
|
8
|
+
:db => 'notes_db.nsf',
|
9
|
+
:user_name => 'myname',
|
10
|
+
:password => '',
|
11
|
+
#:mock_win32ole => true, # test without using Lotus Notes
|
12
|
+
#:logger => true,
|
13
|
+
#:debug => true
|
14
|
+
}
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
Mail.deliver do
|
19
|
+
to 'user@test.com'
|
20
|
+
from 'you@test.com'
|
21
|
+
subject 'test'
|
22
|
+
body 'hello'
|
23
|
+
add_file File.join(Dir.pwd, 'test_notes_mailer.rb')
|
24
|
+
|
25
|
+
end
|
26
|
+
|
metadata
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: notes_mailer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Elias Kugler
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-11-08 00:00:00 +01:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: mail
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 2
|
30
|
+
- 1
|
31
|
+
version: 2.2.1
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: log4r
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 1
|
43
|
+
- 0
|
44
|
+
- 5
|
45
|
+
version: 1.0.5
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
description: NotesMailer allows you to send emails using your local IBM Lotus Notes installation. It is implemented by wrapping the Lotus Notes-win32ole-api as a custom delivery method for Mail. The usage is very similar to the SMTP delivery method in the popular Mail-gem.
|
49
|
+
email: groesser3@gmail.com
|
50
|
+
executables: []
|
51
|
+
|
52
|
+
extensions: []
|
53
|
+
|
54
|
+
extra_rdoc_files:
|
55
|
+
- README.rdoc
|
56
|
+
- CHANGELOG.rdoc
|
57
|
+
files:
|
58
|
+
- lib/notes_mailer.rb
|
59
|
+
- test/mock/win32ole/win32ole.rb
|
60
|
+
- test/test_notes_mailer.rb
|
61
|
+
- MIT-LICENSE
|
62
|
+
- notes_mailer.gemspec
|
63
|
+
- README.rdoc
|
64
|
+
- CHANGELOG.rdoc
|
65
|
+
has_rdoc: true
|
66
|
+
homepage: http://rubyforge.org/projects/notesmailer/
|
67
|
+
licenses: []
|
68
|
+
|
69
|
+
post_install_message:
|
70
|
+
rdoc_options: []
|
71
|
+
|
72
|
+
require_paths:
|
73
|
+
- lib
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
version: "0"
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
|
+
requirements: []
|
89
|
+
|
90
|
+
rubyforge_project: notesmailer
|
91
|
+
rubygems_version: 1.3.6
|
92
|
+
signing_key:
|
93
|
+
specification_version: 3
|
94
|
+
summary: Small gem that uses IBM Lotus Notes to deliver your e-mails.
|
95
|
+
test_files: []
|
96
|
+
|