actionmailer_csi 2.3.5.p6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. data/CHANGELOG +370 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +149 -0
  4. data/Rakefile +99 -0
  5. data/install.rb +30 -0
  6. data/lib/action_mailer/adv_attr_accessor.rb +30 -0
  7. data/lib/action_mailer/base.rb +706 -0
  8. data/lib/action_mailer/helpers.rb +113 -0
  9. data/lib/action_mailer/mail_helper.rb +17 -0
  10. data/lib/action_mailer/part.rb +107 -0
  11. data/lib/action_mailer/part_container.rb +55 -0
  12. data/lib/action_mailer/quoting.rb +61 -0
  13. data/lib/action_mailer/test_case.rb +64 -0
  14. data/lib/action_mailer/test_helper.rb +68 -0
  15. data/lib/action_mailer/utils.rb +7 -0
  16. data/lib/action_mailer/vendor/text-format-0.6.3/text/format.rb +1466 -0
  17. data/lib/action_mailer/vendor/text_format.rb +10 -0
  18. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/address.rb +426 -0
  19. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/attachments.rb +46 -0
  20. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/base64.rb +46 -0
  21. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/compat.rb +41 -0
  22. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/config.rb +67 -0
  23. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/core_extensions.rb +63 -0
  24. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/encode.rb +581 -0
  25. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/header.rb +960 -0
  26. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/index.rb +9 -0
  27. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/interface.rb +1130 -0
  28. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/loader.rb +3 -0
  29. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/mail.rb +578 -0
  30. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/mailbox.rb +495 -0
  31. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/main.rb +6 -0
  32. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/mbox.rb +3 -0
  33. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/net.rb +248 -0
  34. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/obsolete.rb +132 -0
  35. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/parser.rb +1478 -0
  36. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/port.rb +379 -0
  37. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/quoting.rb +118 -0
  38. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/require_arch.rb +58 -0
  39. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/scanner.rb +49 -0
  40. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/scanner_r.rb +261 -0
  41. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/stringio.rb +280 -0
  42. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/utils.rb +337 -0
  43. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/version.rb +39 -0
  44. data/lib/action_mailer/vendor/tmail-1.2.3/tmail.rb +5 -0
  45. data/lib/action_mailer/vendor/tmail.rb +17 -0
  46. data/lib/action_mailer/version.rb +9 -0
  47. data/lib/action_mailer.rb +62 -0
  48. data/lib/actionmailer.rb +2 -0
  49. data/test/abstract_unit.rb +62 -0
  50. data/test/asset_host_test.rb +54 -0
  51. data/test/delivery_method_test.rb +51 -0
  52. data/test/fixtures/asset_host_mailer/email_with_asset.html.erb +1 -0
  53. data/test/fixtures/auto_layout_mailer/hello.html.erb +1 -0
  54. data/test/fixtures/auto_layout_mailer/multipart.text.html.erb +1 -0
  55. data/test/fixtures/auto_layout_mailer/multipart.text.plain.erb +1 -0
  56. data/test/fixtures/explicit_layout_mailer/logout.html.erb +1 -0
  57. data/test/fixtures/explicit_layout_mailer/signup.html.erb +1 -0
  58. data/test/fixtures/first_mailer/share.erb +1 -0
  59. data/test/fixtures/helper_mailer/use_example_helper.erb +1 -0
  60. data/test/fixtures/helper_mailer/use_helper.erb +1 -0
  61. data/test/fixtures/helper_mailer/use_helper_method.erb +1 -0
  62. data/test/fixtures/helper_mailer/use_mail_helper.erb +5 -0
  63. data/test/fixtures/helpers/example_helper.rb +5 -0
  64. data/test/fixtures/layouts/auto_layout_mailer.html.erb +1 -0
  65. data/test/fixtures/layouts/auto_layout_mailer.text.erb +1 -0
  66. data/test/fixtures/layouts/spam.html.erb +1 -0
  67. data/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +1 -0
  68. data/test/fixtures/raw_email +14 -0
  69. data/test/fixtures/raw_email10 +20 -0
  70. data/test/fixtures/raw_email12 +32 -0
  71. data/test/fixtures/raw_email13 +29 -0
  72. data/test/fixtures/raw_email2 +114 -0
  73. data/test/fixtures/raw_email3 +70 -0
  74. data/test/fixtures/raw_email4 +59 -0
  75. data/test/fixtures/raw_email5 +19 -0
  76. data/test/fixtures/raw_email6 +20 -0
  77. data/test/fixtures/raw_email7 +66 -0
  78. data/test/fixtures/raw_email8 +47 -0
  79. data/test/fixtures/raw_email9 +28 -0
  80. data/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  81. data/test/fixtures/raw_email_with_invalid_characters_in_content_type +104 -0
  82. data/test/fixtures/raw_email_with_nested_attachment +100 -0
  83. data/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  84. data/test/fixtures/second_mailer/share.erb +1 -0
  85. data/test/fixtures/templates/signed_up.erb +3 -0
  86. data/test/fixtures/test_mailer/_subtemplate.text.plain.erb +1 -0
  87. data/test/fixtures/test_mailer/body_ivar.erb +2 -0
  88. data/test/fixtures/test_mailer/custom_templating_extension.text.html.haml +6 -0
  89. data/test/fixtures/test_mailer/custom_templating_extension.text.plain.haml +6 -0
  90. data/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +1 -0
  91. data/test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak +1 -0
  92. data/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +10 -0
  93. data/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb~ +10 -0
  94. data/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +2 -0
  95. data/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +1 -0
  96. data/test/fixtures/test_mailer/included_subtemplate.text.plain.erb +1 -0
  97. data/test/fixtures/test_mailer/rxml_template.builder +2 -0
  98. data/test/fixtures/test_mailer/rxml_template.rxml +2 -0
  99. data/test/fixtures/test_mailer/signed_up.html.erb +3 -0
  100. data/test/fixtures/test_mailer/signed_up_with_url.erb +5 -0
  101. data/test/mail_helper_test.rb +95 -0
  102. data/test/mail_layout_test.rb +123 -0
  103. data/test/mail_render_test.rb +116 -0
  104. data/test/mail_service_test.rb +1081 -0
  105. data/test/quoting_test.rb +99 -0
  106. data/test/test_helper_test.rb +129 -0
  107. data/test/tmail_test.rb +22 -0
  108. data/test/url_test.rb +76 -0
  109. metadata +195 -0
@@ -0,0 +1,248 @@
1
+ #--
2
+ # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #
23
+ # Note: Originally licensed under LGPL v2+. Using MIT license for Rails
24
+ # with permission of Minero Aoki.
25
+ #++
26
+
27
+ #:stopdoc:
28
+ require 'nkf'
29
+ #:startdoc:
30
+
31
+ module TMail
32
+
33
+ class Mail
34
+
35
+ def send_to( smtp )
36
+ do_send_to(smtp) do
37
+ ready_to_send
38
+ end
39
+ end
40
+
41
+ def send_text_to( smtp )
42
+ do_send_to(smtp) do
43
+ ready_to_send
44
+ mime_encode
45
+ end
46
+ end
47
+
48
+ def do_send_to( smtp )
49
+ from = from_address or raise ArgumentError, 'no from address'
50
+ (dests = destinations).empty? and raise ArgumentError, 'no receipient'
51
+ yield
52
+ send_to_0 smtp, from, dests
53
+ end
54
+ private :do_send_to
55
+
56
+ def send_to_0( smtp, from, to )
57
+ smtp.ready(from, to) do |f|
58
+ encoded "\r\n", 'j', f, ''
59
+ end
60
+ end
61
+
62
+ def ready_to_send
63
+ delete_no_send_fields
64
+ add_message_id
65
+ add_date
66
+ end
67
+
68
+ NOSEND_FIELDS = %w(
69
+ received
70
+ bcc
71
+ )
72
+
73
+ def delete_no_send_fields
74
+ NOSEND_FIELDS.each do |nm|
75
+ delete nm
76
+ end
77
+ delete_if {|n,v| v.empty? }
78
+ end
79
+
80
+ def add_message_id( fqdn = nil )
81
+ self.message_id = ::TMail::new_message_id(fqdn)
82
+ end
83
+
84
+ def add_date
85
+ self.date = Time.now
86
+ end
87
+
88
+ def mime_encode
89
+ if parts.empty?
90
+ mime_encode_singlepart
91
+ else
92
+ mime_encode_multipart true
93
+ end
94
+ end
95
+
96
+ def mime_encode_singlepart
97
+ self.mime_version = '1.0'
98
+ b = body
99
+ if NKF.guess(b) != NKF::BINARY
100
+ mime_encode_text b
101
+ else
102
+ mime_encode_binary b
103
+ end
104
+ end
105
+
106
+ def mime_encode_text( body )
107
+ self.body = NKF.nkf('-j -m0', body)
108
+ self.set_content_type 'text', 'plain', {'charset' => 'iso-2022-jp'}
109
+ self.encoding = '7bit'
110
+ end
111
+
112
+ def mime_encode_binary( body )
113
+ self.body = [body].pack('m')
114
+ self.set_content_type 'application', 'octet-stream'
115
+ self.encoding = 'Base64'
116
+ end
117
+
118
+ def mime_encode_multipart( top = true )
119
+ self.mime_version = '1.0' if top
120
+ self.set_content_type 'multipart', 'mixed'
121
+ e = encoding(nil)
122
+ if e and not /\A(?:7bit|8bit|binary)\z/i === e
123
+ raise ArgumentError,
124
+ 'using C.T.Encoding with multipart mail is not permitted'
125
+ end
126
+ end
127
+
128
+ end
129
+
130
+ #:stopdoc:
131
+ class DeleteFields
132
+
133
+ NOSEND_FIELDS = %w(
134
+ received
135
+ bcc
136
+ )
137
+
138
+ def initialize( nosend = nil, delempty = true )
139
+ @no_send_fields = nosend || NOSEND_FIELDS.dup
140
+ @delete_empty_fields = delempty
141
+ end
142
+
143
+ attr :no_send_fields
144
+ attr :delete_empty_fields, true
145
+
146
+ def exec( mail )
147
+ @no_send_fields.each do |nm|
148
+ delete nm
149
+ end
150
+ delete_if {|n,v| v.empty? } if @delete_empty_fields
151
+ end
152
+
153
+ end
154
+ #:startdoc:
155
+
156
+ #:stopdoc:
157
+ class AddMessageId
158
+
159
+ def initialize( fqdn = nil )
160
+ @fqdn = fqdn
161
+ end
162
+
163
+ attr :fqdn, true
164
+
165
+ def exec( mail )
166
+ mail.message_id = ::TMail::new_msgid(@fqdn)
167
+ end
168
+
169
+ end
170
+ #:startdoc:
171
+
172
+ #:stopdoc:
173
+ class AddDate
174
+
175
+ def exec( mail )
176
+ mail.date = Time.now
177
+ end
178
+
179
+ end
180
+ #:startdoc:
181
+
182
+ #:stopdoc:
183
+ class MimeEncodeAuto
184
+
185
+ def initialize( s = nil, m = nil )
186
+ @singlepart_composer = s || MimeEncodeSingle.new
187
+ @multipart_composer = m || MimeEncodeMulti.new
188
+ end
189
+
190
+ attr :singlepart_composer
191
+ attr :multipart_composer
192
+
193
+ def exec( mail )
194
+ if mail._builtin_multipart?
195
+ then @multipart_composer
196
+ else @singlepart_composer end.exec mail
197
+ end
198
+
199
+ end
200
+ #:startdoc:
201
+
202
+ #:stopdoc:
203
+ class MimeEncodeSingle
204
+
205
+ def exec( mail )
206
+ mail.mime_version = '1.0'
207
+ b = mail.body
208
+ if NKF.guess(b) != NKF::BINARY
209
+ on_text b
210
+ else
211
+ on_binary b
212
+ end
213
+ end
214
+
215
+ def on_text( body )
216
+ mail.body = NKF.nkf('-j -m0', body)
217
+ mail.set_content_type 'text', 'plain', {'charset' => 'iso-2022-jp'}
218
+ mail.encoding = '7bit'
219
+ end
220
+
221
+ def on_binary( body )
222
+ mail.body = [body].pack('m')
223
+ mail.set_content_type 'application', 'octet-stream'
224
+ mail.encoding = 'Base64'
225
+ end
226
+
227
+ end
228
+ #:startdoc:
229
+
230
+ #:stopdoc:
231
+ class MimeEncodeMulti
232
+
233
+ def exec( mail, top = true )
234
+ mail.mime_version = '1.0' if top
235
+ mail.set_content_type 'multipart', 'mixed'
236
+ e = encoding(nil)
237
+ if e and not /\A(?:7bit|8bit|binary)\z/i === e
238
+ raise ArgumentError,
239
+ 'using C.T.Encoding with multipart mail is not permitted'
240
+ end
241
+ mail.parts.each do |m|
242
+ exec m, false if m._builtin_multipart?
243
+ end
244
+ end
245
+
246
+ end
247
+ #:startdoc:
248
+ end # module TMail
@@ -0,0 +1,132 @@
1
+ =begin rdoc
2
+
3
+ = Obsolete methods that are depriciated
4
+
5
+ If you really want to see them, go to lib/tmail/obsolete.rb and view to your
6
+ heart's content.
7
+
8
+ =end
9
+ #--
10
+ # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
11
+ #
12
+ # Permission is hereby granted, free of charge, to any person obtaining
13
+ # a copy of this software and associated documentation files (the
14
+ # "Software"), to deal in the Software without restriction, including
15
+ # without limitation the rights to use, copy, modify, merge, publish,
16
+ # distribute, sublicense, and/or sell copies of the Software, and to
17
+ # permit persons to whom the Software is furnished to do so, subject to
18
+ # the following conditions:
19
+ #
20
+ # The above copyright notice and this permission notice shall be
21
+ # included in all copies or substantial portions of the Software.
22
+ #
23
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
+ #
31
+ # Note: Originally licensed under LGPL v2+. Using MIT license for Rails
32
+ # with permission of Minero Aoki.
33
+ #++
34
+ #:stopdoc:
35
+ module TMail #:nodoc:
36
+
37
+ class Mail
38
+ alias include? key?
39
+ alias has_key? key?
40
+
41
+ def values
42
+ ret = []
43
+ each_field {|v| ret.push v }
44
+ ret
45
+ end
46
+
47
+ def value?( val )
48
+ HeaderField === val or return false
49
+
50
+ [ @header[val.name.downcase] ].flatten.include? val
51
+ end
52
+
53
+ alias has_value? value?
54
+ end
55
+
56
+ class Mail
57
+ def from_addr( default = nil )
58
+ addr, = from_addrs(nil)
59
+ addr || default
60
+ end
61
+
62
+ def from_address( default = nil )
63
+ if a = from_addr(nil)
64
+ a.spec
65
+ else
66
+ default
67
+ end
68
+ end
69
+
70
+ alias from_address= from_addrs=
71
+
72
+ def from_phrase( default = nil )
73
+ if a = from_addr(nil)
74
+ a.phrase
75
+ else
76
+ default
77
+ end
78
+ end
79
+
80
+ alias msgid message_id
81
+ alias msgid= message_id=
82
+
83
+ alias each_dest each_destination
84
+ end
85
+
86
+ class Address
87
+ alias route routes
88
+ alias addr spec
89
+
90
+ def spec=( str )
91
+ @local, @domain = str.split(/@/,2).map {|s| s.split(/\./) }
92
+ end
93
+
94
+ alias addr= spec=
95
+ alias address= spec=
96
+ end
97
+
98
+ class MhMailbox
99
+ alias new_mail new_port
100
+ alias each_mail each_port
101
+ alias each_newmail each_new_port
102
+ end
103
+ class UNIXMbox
104
+ alias new_mail new_port
105
+ alias each_mail each_port
106
+ alias each_newmail each_new_port
107
+ end
108
+ class Maildir
109
+ alias new_mail new_port
110
+ alias each_mail each_port
111
+ alias each_newmail each_new_port
112
+ end
113
+
114
+ extend TextUtils
115
+
116
+ class << self
117
+ alias msgid? message_id?
118
+ alias boundary new_boundary
119
+ alias msgid new_message_id
120
+ alias new_msgid new_message_id
121
+ end
122
+
123
+ def Mail.boundary
124
+ ::TMail.new_boundary
125
+ end
126
+
127
+ def Mail.msgid
128
+ ::TMail.new_message_id
129
+ end
130
+
131
+ end # module TMail
132
+ #:startdoc: