smtp_max = 499 # máximo de destinatários do smtp
while not destinatarios.empty? # enquanto há destinatários
begin
# envia para os primeiros destinatários
ContatoMailer.deliver_email(destinatarios.first(smtp_max))
rescue Net::SMTPFatalError, Net::SMTPServerBusy,
Net::SMTPUnknownError, Net::SMTPSyntaxError,
Net::SMTPAuthenticationError, IOError, TimeoutError
end
destinatarios.slice!(0..smtp_max - 1) # retira da lista os destinatários enviados
end
Neste exemplo assumimos que a variável destinatários é um vetor de e-mails. Ex: ["email1@dominio", "email2@dominio", "email3@dominio"]
Observação: Na minha aplicação, envio os e-mails em background através do plugin delayed job a fim de aumentar o conforto para o usuário e melhorar o desenpelho. Mas como realizar tarefas em background fica para outro post!
Comentários
Postar um comentário