Forum: Ruby Exception in for next item

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
C14805404d3f08ba9b1f6ad93c01615f?d=identicon&s=25 Daniel Wijnands (dewie)
on 2006-01-05 22:01
Hello

I retrieve a number of message 1 to n
And try to send these by stmp that is no problem with te following code
:

     messages = Spool.find_created_messages

     Net::SMTP.start('sigma.itxl.nl',25,'itxl.nl') do | smtp |
       for message in messages
         begin
           smtp.send_message message.mime_content, message.email_from
,message.email_to
           message.destroy
         rescue Net::SMTPSyntaxError
           message.state = 'ERROR'
           message.save
         rescue Exception => exc
           message.state = 'ERROR'
           message.save
           STDERR.puts "General spool error #{exc.class} #{exc.message}"
         end
       end
     end

I would like to handel smtp errors gracefully, log the message en
continue with the next message
in the loop.
For example when the email adres has a syntac error danielitxl.nl ( no
@)
The next message should be sended, so the system doesn't get halted

Any ideas ?

Thanks in advantage
C14805404d3f08ba9b1f6ad93c01615f?d=identicon&s=25 Daniel Wijnands (dewie)
on 2006-01-06 08:47
I have pinpointed the problem what happens is this :

daniel-wijnands-powerbook58:~/Desktop/mailing danielwijnands$ ruby
script/runner 'Spool.spool'
General spool error Net::SMTPServerBusy 450 <pietitxl.nl>: User unknown
in local recipient table
General spool error Net::SMTPSyntaxError 503 Error: nested MAIL command
General spool error Net::SMTPSyntaxError 503 Error: nested MAIL command

The problem is that i'm sending multiple messages.
When te exception occurs ( Net::SMTPServerBusy 450 ) the server still
has the message open.
When i send another message it says Nested Mail command.

Is it possible to reset the connnection or the previous command ?
C14805404d3f08ba9b1f6ad93c01615f?d=identicon&s=25 Daniel Wijnands (dewie)
on 2006-01-06 08:53
Okay i have a solution. but i think it could be formed nicer :

   Net::SMTP.start('mailserver',25,'domain') do | smtp |
       for message in messages
         begin
           smtp.send_message message.mime_content, message.email_from
,message.email_to
           message.destroy
         rescue Exception => exc
           message.state = 'ERROR'
           message.save
           smtp.finish
           smtp = smtp.start('domain')
           STDERR.puts "General spool error #{exc.class} #{exc.message}"
           next
         end
       end
     end
   end
This topic is locked and can not be replied to.