[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Exception in for next item

daniel wijnands

1/5/2006 9:01:00 PM

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

--
Posted via http://www.ruby-....


2 Answers

daniel wijnands

1/6/2006 7:48:00 AM

0


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 ?


--
Posted via http://www.ruby-....


daniel wijnands

1/6/2006 7:54:00 AM

0

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

--
Posted via http://www.ruby-....