mailfactory 0.5.0 → 0.5.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/lib/mailfactory.rb +35 -7
- data/tests/test_mailfactory.rb +66 -1
- metadata +2 -3
- data/lib/test.rb +0 -21
data/lib/mailfactory.rb
CHANGED
@@ -126,6 +126,17 @@ class MailFactory
|
|
126
126
|
end
|
127
127
|
|
128
128
|
|
129
|
+
def replyto=(newreplyto)
|
130
|
+
remove_header("Reply-To")
|
131
|
+
add_header("Reply-To", newreplyto)
|
132
|
+
end
|
133
|
+
|
134
|
+
|
135
|
+
def replyto()
|
136
|
+
return(get_header("Reply-To")[0])
|
137
|
+
end
|
138
|
+
|
139
|
+
|
129
140
|
# sets the plain text body of the message
|
130
141
|
def text=(newtext)
|
131
142
|
@text = newtext
|
@@ -220,8 +231,14 @@ class MailFactory
|
|
220
231
|
def add_attachment(filename, type=nil)
|
221
232
|
attachment = Array.new()
|
222
233
|
attachment[0] = Pathname.new(filename).basename
|
223
|
-
|
224
|
-
|
234
|
+
if(type == nil)
|
235
|
+
attachment[1] = MIME::Types.type_for(filename).to_s
|
236
|
+
else
|
237
|
+
attachment[1] = type
|
238
|
+
end
|
239
|
+
|
240
|
+
# Open in rb mode to handle Windows, which mangles binary files opened in a text mode
|
241
|
+
File.open(filename, "rb") { |fp|
|
225
242
|
attachment[2] = Base64.b64encode(fp.read())
|
226
243
|
}
|
227
244
|
@attachments << attachment
|
@@ -230,13 +247,24 @@ class MailFactory
|
|
230
247
|
|
231
248
|
# adds an attachment to the mail as emailfilename. Type may be given as a mime type. If it
|
232
249
|
# is left off and the MIME::Types module is available it will be determined automagically.
|
233
|
-
|
250
|
+
# file may be given as an IO stream (which will be read until the end) or as a filename.
|
251
|
+
def add_attachment_as(file, emailfilename, type=nil)
|
234
252
|
attachment = Array.new()
|
235
253
|
attachment[0] = emailfilename
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
254
|
+
if(!file.respond_to?(:stat) and type == nil)
|
255
|
+
attachment[1] = MIME::Types.type_for(file.to_s()).to_s
|
256
|
+
else
|
257
|
+
attachemnt[1] = type
|
258
|
+
end
|
259
|
+
|
260
|
+
if(file.respond_to?(:stat))
|
261
|
+
# Open in rb mode to handle Windows, which mangles binary files opened in a text mode
|
262
|
+
File.open(file.to_s(), "rb") { |fp|
|
263
|
+
attachment[2] = Base64.b64encode(fp.read())
|
264
|
+
}
|
265
|
+
else
|
266
|
+
attachment[2] = Base64.b64encode(file.read())
|
267
|
+
end
|
240
268
|
@attachments << attachment
|
241
269
|
end
|
242
270
|
|
data/tests/test_mailfactory.rb
CHANGED
@@ -1,8 +1,47 @@
|
|
1
1
|
#!/usr/local/bin/ruby
|
2
2
|
|
3
|
-
require 'test/unit'
|
3
|
+
require 'test/unit/ui/console/testrunner'
|
4
4
|
require '../lib/mailfactory.rb'
|
5
5
|
|
6
|
+
|
7
|
+
def get_options()
|
8
|
+
options = Hash.new()
|
9
|
+
|
10
|
+
opts = OptionParser.new() { |opts|
|
11
|
+
opts.on_tail("-h", "--help", "Print this message") {
|
12
|
+
print(opts)
|
13
|
+
exit()
|
14
|
+
}
|
15
|
+
|
16
|
+
opts.on("-s", "--smtpserver SERVER", "SMTP server to use for remote tests") { |server|
|
17
|
+
options['smtpserver'] = server
|
18
|
+
}
|
19
|
+
|
20
|
+
opts.on("-f", "--from ADDRESS", "address to send the mail from") { |address|
|
21
|
+
options['from'] = address
|
22
|
+
}
|
23
|
+
|
24
|
+
opts.on("-t", "--to ADDRESS", "address to send the mail to") { |address|
|
25
|
+
options['to'] = address
|
26
|
+
}
|
27
|
+
|
28
|
+
opts.on("-u", "--username USERNAME", "username for smtp auth (required)") { |username|
|
29
|
+
options['username'] = username
|
30
|
+
}
|
31
|
+
|
32
|
+
opts.on("-p", "--password PASSWORD", "password for smtp auth (required)") { |password|
|
33
|
+
options['password'] = password
|
34
|
+
}
|
35
|
+
|
36
|
+
}
|
37
|
+
|
38
|
+
opts.parse(ARGV)
|
39
|
+
|
40
|
+
return(options)
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
|
6
45
|
class TC_MailFactory < Test::Unit::TestCase
|
7
46
|
|
8
47
|
def setup()
|
@@ -30,6 +69,7 @@ class TC_MailFactory < Test::Unit::TestCase
|
|
30
69
|
}
|
31
70
|
assert_equal(1, count, "Count of To: headers expected to be 1, but was #{count}")
|
32
71
|
end
|
72
|
+
|
33
73
|
|
34
74
|
def test_set_from
|
35
75
|
assert_nothing_raised("exception raised while setting from=") {
|
@@ -52,6 +92,7 @@ class TC_MailFactory < Test::Unit::TestCase
|
|
52
92
|
assert_equal(1, count, "Count of From: headers expected to be 1, but was #{count}")
|
53
93
|
end
|
54
94
|
|
95
|
+
|
55
96
|
def test_set_subject
|
56
97
|
assert_nothing_raised("exception raised while setting subject=") {
|
57
98
|
@mail.subject = "Test Subject"
|
@@ -73,6 +114,7 @@ class TC_MailFactory < Test::Unit::TestCase
|
|
73
114
|
assert_equal(1, count, "Count of Subject: headers expected to be 1, but was #{count}")
|
74
115
|
end
|
75
116
|
|
117
|
+
|
76
118
|
def test_set_header
|
77
119
|
assert_nothing_raised("exception raised while setting arbitrary header") {
|
78
120
|
@mail.set_header("arbitrary", "some value")
|
@@ -80,6 +122,7 @@ class TC_MailFactory < Test::Unit::TestCase
|
|
80
122
|
|
81
123
|
assert_equal("some value", @mail.get_header("arbitrary")[0], "arbitrary header does not equal \"some value\"")
|
82
124
|
end
|
125
|
+
|
83
126
|
|
84
127
|
def test_boundary_generator
|
85
128
|
1.upto(50) {
|
@@ -87,10 +130,32 @@ class TC_MailFactory < Test::Unit::TestCase
|
|
87
130
|
}
|
88
131
|
end
|
89
132
|
|
133
|
+
|
90
134
|
def test_email
|
91
135
|
@mail.to="test@test.com"
|
92
136
|
@mail.from="test@othertest.com"
|
93
137
|
@mail.subject="This is a test"
|
94
138
|
@mail.text = "This is a test message with\na few\n\nlines."
|
139
|
+
|
140
|
+
@mail.attach('testfile.txt')
|
141
|
+
@mail.attach('testsheet.xls')
|
142
|
+
|
143
|
+
if($options['smtpserver'] != nil and $options['to'] != nil and $options['from'] != nil)
|
144
|
+
assert_nothing_raised() {
|
145
|
+
require('net/smtp')
|
146
|
+
Net::SMTP.start($options['smtpserver'], 25, 'mail.from.domain', $options['username'], $options['password'], :cram_md5) { |smtp|
|
147
|
+
smtp.send_message(@mail.to_s(), $options['from'], $options['to'])
|
148
|
+
}
|
149
|
+
}
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
|
154
|
+
def test_attach
|
95
155
|
end
|
156
|
+
|
96
157
|
end
|
158
|
+
|
159
|
+
|
160
|
+
$options = get_options()
|
161
|
+
Test::Unit::UI::Console::TestRunner.run(TC_MailFactory)
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
|
|
3
3
|
specification_version: 1
|
4
4
|
name: mailfactory
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.5.
|
7
|
-
date: 2005-
|
6
|
+
version: 0.5.1
|
7
|
+
date: 2005-06-16
|
8
8
|
summary: MailFactory is a pure-ruby MIME mail generator
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -29,7 +29,6 @@ authors:
|
|
29
29
|
- David Powers
|
30
30
|
files:
|
31
31
|
- lib/mailfactory.rb
|
32
|
-
- lib/test.rb
|
33
32
|
test_files:
|
34
33
|
- tests/test_mailfactory.rb
|
35
34
|
rdoc_options: []
|
data/lib/test.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
|
3
|
-
require 'net/smtp'
|
4
|
-
require 'rubygems'
|
5
|
-
require 'mailfactory'
|
6
|
-
|
7
|
-
|
8
|
-
mail = MailFactory.new()
|
9
|
-
mail.to = "test@test.com"
|
10
|
-
mail.from = "sender@sender.com"
|
11
|
-
mail.subject = "Here are some files for you!"
|
12
|
-
mail.text = "This is what people with plain text mail readers will see"
|
13
|
-
mail.html = "A little something <b>special</b> for people with HTML readers"
|
14
|
-
mail.attach("/etc/fstab")
|
15
|
-
mail.attach("/some/other/file")
|
16
|
-
|
17
|
-
Net::SMTP.start('smtp1.testmailer.com', 25, 'mail.from.domain', fromaddress, password, :cram_md5) { |smtp|
|
18
|
-
mail.to = toaddress
|
19
|
-
smtp.send_message(mail.to_s(), fromaddress, toaddress)
|
20
|
-
}
|
21
|
-
|