Changeset 1958
- Timestamp:
- 07/31/05 08:26:32 (3 years ago)
- Files:
-
- trunk/actionmailer/CHANGELOG (modified) (1 diff)
- trunk/actionmailer/lib/action_mailer/base.rb (modified) (3 diffs)
- trunk/actionmailer/test/mail_service_test.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/actionmailer/CHANGELOG
r1849 r1958 1 1 *SVN* 2 3 * ActionMailer::Base.deliver(email) had been accidentally removed, but was documented in the Rails book #1849 2 4 3 5 * Fix problem with sendmail delivery where headers should be delimited by \n characters instead of \r\n, which confuses some mail readers #1742 [Kent Sibilev] trunk/actionmailer/lib/action_mailer/base.rb
r1849 r1958 161 161 attr_reader :mail 162 162 163 class << self 164 def method_missing(method_symbol, *parameters)#:nodoc: 165 case method_symbol.id2name 166 when /^create_([_a-z]\w*)/ then new($1, *parameters).mail 167 when /^deliver_([_a-z]\w*)/ then new($1, *parameters).deliver! 168 when "new" then nil 169 else super 170 end 171 end 172 173 def receive(raw_email) #:nodoc: 174 logger.info "Received mail:\n #{raw_email}" unless logger.nil? 175 mail = TMail::Mail.parse(raw_email) 176 mail.base64_decode 177 new.receive(mail) 178 end 179 180 # Deliver the given mail object directly. This can be used to deliver 181 # a preconstructed mail object, like: 182 # 183 # email = MyMailer.create_some_mail(parameters) 184 # email.set_some_obscure_header "frobnicate" 185 # MyMailer.deliver(email) 186 def deliver(mail) 187 new.deliver!(mail) 188 end 189 end 190 163 191 # Instantiate a new mailer object. If +method_name+ is not +nil+, the mailer 164 192 # will be initialized according to the named method. If not, the mailer will … … 224 252 end 225 253 226 # Delivers the cached TMail::Mail object. If no TMail::Mail object has been 227 # created (via the #create! method, for instance) this will fail. 228 def deliver! #:nodoc: 229 raise "no mail object available for delivery!" unless @mail 254 # Delivers a TMail::Mail object. By default, it delivers the cached mail 255 # object (from the #create! method). If no cached mail object exists, and 256 # no alternate has been given as the parameter, this will fail. 257 def deliver!(mail = @mail) #:nodoc: 258 raise "no mail object available for delivery!" unless mail 230 259 logger.info "Sent mail:\n #{mail.encoded}" unless logger.nil? 231 260 232 261 begin 233 send("perform_delivery_#{delivery_method}", @mail) if perform_deliveries262 send("perform_delivery_#{delivery_method}", mail) if perform_deliveries 234 263 rescue Object => e 235 264 raise e if raise_delivery_errors 236 265 end 237 266 238 return @mail267 return mail 239 268 end 240 269 … … 335 364 deliveries << mail 336 365 end 337 338 class << self339 def method_missing(method_symbol, *parameters)#:nodoc:340 case method_symbol.id2name341 when /^create_([_a-z]\w*)/ then new($1, *parameters).mail342 when /^deliver_([_a-z]\w*)/ then new($1, *parameters).deliver!343 when "new" then nil344 else super345 end346 end347 348 def receive(raw_email)349 logger.info "Received mail:\n #{raw_email}" unless logger.nil?350 mail = TMail::Mail.parse(raw_email)351 mail.base64_decode352 new.receive(mail)353 end354 355 end356 366 end 357 367 end trunk/actionmailer/test/mail_service_test.rb
r1732 r1958 669 669 assert_match(/:/, mail.bcc_addrs.to_s) 670 670 end 671 672 def test_deliver_with_mail_object 673 mail = TestMailer::create_headers_with_nonalpha_chars(@recipient) 674 assert_nothing_raised { TestMailer.deliver(mail) } 675 assert_equal 1, TestMailer.deliveries.length 676 end 671 677 end 672 678