Exception in for next item


#1

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


#2

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 ?


#3

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