Desculpe, seu navegador não suporta JavaScript! Casa Open: E-mail para vários destinatários

E-mail para vários destinatários

Recentemente desenvolvi uma aplicação que tinha a necessidade de enviar e-mail para vários destinatários. O que poderia gerar problemas relacionados a quantidade máxima de destinatários  - CC, CCo, BCC... - do SMTP. No meu caso o SMTP permitia enviar e-mails para no máximo 500 destinatários em uma única vez via mala direta. Fato é que este detalhe nem sempre é lembrado na hora do desenvolvimento. Então deixo aqui uma sugestão de código para enviar e-mails respeitando o limite de destinatários:




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

Casa Open | by Samuel Vinícius, Belo Horizonte - MG. Powered by Blogger