mailfactory 0.5.2 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/mailfactory.rb CHANGED
@@ -56,6 +56,8 @@ class MailFactory
56
56
  @attachments = Array.new()
57
57
  @attachmentboundary = generate_boundary()
58
58
  @bodyboundary = generate_boundary()
59
+ @html = nil
60
+ @text = nil
59
61
  end
60
62
 
61
63
 
@@ -82,50 +84,6 @@ class MailFactory
82
84
  end
83
85
 
84
86
 
85
- def to=(newto)
86
- remove_header("To")
87
- add_header("To", newto)
88
- end
89
-
90
-
91
- def to()
92
- return(get_header("To")[0])
93
- end
94
-
95
-
96
- def from=(newfrom)
97
- remove_header("From")
98
- add_header("From", newfrom)
99
- end
100
-
101
-
102
- def from()
103
- return(get_header("From")[0])
104
- end
105
-
106
-
107
- def subject=(newsubject)
108
- remove_header("Subject")
109
- add_header("Subject", newsubject)
110
- end
111
-
112
-
113
- def subject()
114
- return(get_header("Subject")[0])
115
- end
116
-
117
-
118
- def cc=(newcc)
119
- remove_header("CC")
120
- add_header("CC", newcc)
121
- end
122
-
123
-
124
- def cc()
125
- return(get_header("CC")[0])
126
- end
127
-
128
-
129
87
  def replyto=(newreplyto)
130
88
  remove_header("Reply-To")
131
89
  add_header("Reply-To", newreplyto)
@@ -156,6 +114,35 @@ class MailFactory
156
114
  end
157
115
 
158
116
 
117
+ # implement method missing to provide helper methods for setting and getting headers.
118
+ # Headers with '-' characters may be set/gotten as 'x_mailer' or 'XMailer' (splitting
119
+ # will occur between capital letters or on '_' chracters)
120
+ def method_missing(methId, *args)
121
+ name = methId.id2name()
122
+
123
+ # mangle the name if we have to
124
+ if(name =~ /_/)
125
+ name = name.gsub(/_/, '-')
126
+ elsif(name =~ /[A-Z]/)
127
+ name = name.gsub(/([a-zA-Z])([A-Z])/, '\1-\2')
128
+ end
129
+
130
+ # determine if it sets or gets, and do the right thing
131
+ if(name =~ /=$/)
132
+ if(args.length != 1)
133
+ super(methId, args)
134
+ end
135
+ set_header(name[/^(.*)=$/, 1], args[0])
136
+ else
137
+ if(args.length != 0)
138
+ super(methId, args)
139
+ end
140
+ headers = get_header(name)
141
+ return(get_header(name))
142
+ end
143
+ end
144
+
145
+
159
146
  # returns the value (or values) of the named header in an array
160
147
  def get_header(header)
161
148
  headers = Array.new()
@@ -182,10 +169,14 @@ class MailFactory
182
169
 
183
170
  # returns a formatted email
184
171
  def to_s()
172
+ # all emails get a unique message-id
173
+ remove_header("Message-ID")
174
+ add_header("Message-ID", "<#{Time.now.to_f()}.#{Process.euid()}.#{String.new.object_id()}>")
175
+
185
176
  if(get_header("Date").length == 0)
186
177
  add_header("Date", Time.now.strftime("%a, %d %B %Y %H:%M:%S %Z"))
187
178
  end
188
-
179
+
189
180
  # Add a mime header if we don't already have one and we have multiple parts
190
181
  if(multipart?())
191
182
  if(get_header("MIME-Version").length == 0)
@@ -257,13 +248,15 @@ class MailFactory
257
248
  attachment[1] = type
258
249
  end
259
250
 
260
- if(!file.respond_to?(:stat))
251
+ if(file.kind_of?(String) or file.kind_of?(Pathname))
261
252
  # Open in rb mode to handle Windows, which mangles binary files opened in a text mode
262
253
  File.open(file.to_s(), "rb") { |fp|
263
254
  attachment[2] = Base64.b64encode(fp.read())
264
255
  }
256
+ elsif(file.respond_to?(:read))
257
+ attachment[2] = Base64.b64encode(file.read())
265
258
  else
266
- attachment[2] = Base64.b64encode(file.read())
259
+ raise(Exception, "file is not a supported type")
267
260
  end
268
261
  @attachments << attachment
269
262
  end
@@ -1,7 +1,7 @@
1
1
  #!/usr/local/bin/ruby
2
2
 
3
3
  require 'test/unit/ui/console/testrunner'
4
- require '../lib/mailfactory.rb'
4
+ require File.dirname(__FILE__) + '/../lib/mailfactory.rb'
5
5
 
6
6
 
7
7
  def get_options()
@@ -54,7 +54,7 @@ class TC_MailFactory < Test::Unit::TestCase
54
54
  @mail.to = "test@test.com"
55
55
  }
56
56
 
57
- assert_equal(@mail.to, "test@test.com", "to does not equal what it was set to")
57
+ assert_equal(@mail.to, ["test@test.com"], "to does not equal what it was set to")
58
58
 
59
59
  assert_nothing_raised("exception raised while setting to=") {
60
60
  @mail.to = "test@test2.com"
@@ -76,7 +76,7 @@ class TC_MailFactory < Test::Unit::TestCase
76
76
  @mail.from = "test@test.com"
77
77
  }
78
78
 
79
- assert_equal(@mail.from, "test@test.com", "from does not equal what it was set to")
79
+ assert_equal(@mail.from, ["test@test.com"], "from does not equal what it was set to")
80
80
 
81
81
  assert_nothing_raised("exception raised while setting from=") {
82
82
  @mail.from = "test@test2.com"
@@ -98,7 +98,7 @@ class TC_MailFactory < Test::Unit::TestCase
98
98
  @mail.subject = "Test Subject"
99
99
  }
100
100
 
101
- assert_equal(@mail.subject, "Test Subject", "subject does not equal what it was set to")
101
+ assert_equal(@mail.subject, ["Test Subject"], "subject does not equal what it was set to")
102
102
 
103
103
  assert_nothing_raised("exception raised while setting subject=") {
104
104
  @mail.subject = "A Different Subject"
@@ -121,6 +121,21 @@ class TC_MailFactory < Test::Unit::TestCase
121
121
  }
122
122
 
123
123
  assert_equal("some value", @mail.get_header("arbitrary")[0], "arbitrary header does not equal \"some value\"")
124
+
125
+ assert_nothing_raised("exception raised while setting arbitrary header with _") {
126
+ @mail.arbitrary_header = "some _ value"
127
+ }
128
+
129
+ assert_equal(["some _ value"], @mail.get_header("arbitrary-header"), "arbitrary header does not equal \"some _ value\"")
130
+ assert_equal(["some _ value"], @mail.arbitrary_header, "arbitrary header does not equal \"some _ value\"")
131
+
132
+
133
+ assert_nothing_raised("exception raised while setting arbitraryHeader") {
134
+ @mail.arbitraryHeader = "someValue"
135
+ }
136
+
137
+ assert_equal(["someValue"], @mail.get_header("arbitrary-header"), "arbitrary header does not equal \"someValue\"")
138
+ assert_equal(["someValue"], @mail.arbitraryHeader, "arbitrary header does not equal \"someValue\"")
124
139
  end
125
140
 
126
141
 
@@ -137,8 +152,8 @@ class TC_MailFactory < Test::Unit::TestCase
137
152
  @mail.subject="This is a test"
138
153
  @mail.text = "This is a test message with\na few\n\nlines."
139
154
 
140
- @mail.attach('testfile.txt')
141
- @mail.attach('testsheet.xls')
155
+ @mail.attach(File.dirname(__FILE__) + '/testfile.txt')
156
+ @mail.attach(File.dirname(__FILE__) + '/testsheet.xls')
142
157
 
143
158
  if($options['smtpserver'] != nil and $options['to'] != nil and $options['from'] != nil)
144
159
  assert_nothing_raised() {
@@ -157,8 +172,8 @@ class TC_MailFactory < Test::Unit::TestCase
157
172
  @mail.subject="This is a test"
158
173
  @mail.text = "This is a test message with\na few\n\nlines."
159
174
 
160
- @mail.add_attachment_as('testfile.txt', 'newname.txt')
161
- @mail.add_attachment_as(File.open('testsheet.xls', 'rb'), 'newname.xls', 'application/vnd.ms-excel')
175
+ @mail.add_attachment_as(File.dirname(__FILE__) + '/testfile.txt', 'newname.txt')
176
+ @mail.add_attachment_as(File.open(File.dirname(__FILE__) + '/testsheet.xls', 'rb'), 'newname.xls', 'application/vnd.ms-excel')
162
177
 
163
178
  if($options['smtpserver'] != nil and $options['to'] != nil and $options['from'] != nil)
164
179
  assert_nothing_raised() {
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.10
2
+ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: mailfactory
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.5.2
7
- date: 2005-06-16
6
+ version: 1.0.2
7
+ date: 2005-09-16 00:00:00 -04:00
8
8
  summary: MailFactory is a pure-ruby MIME mail generator
9
9
  require_paths:
10
10
  - lib
@@ -25,12 +25,14 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
25
25
  version: 0.0.0
26
26
  version:
27
27
  platform: ruby
28
+ signing_key:
29
+ cert_chain:
28
30
  authors:
29
31
  - David Powers
30
32
  files:
31
- - lib/mailfactory.rb
33
+ - "./lib/mailfactory.rb"
32
34
  test_files:
33
- - tests/test_mailfactory.rb
35
+ - "./tests/test_mailfactory.rb"
34
36
  rdoc_options: []
35
37
  extra_rdoc_files: []
36
38
  executables: []