Qual a melhor maneira de enviar email em massa?

Tenho uma aplicação web com mailing 2000 registro. quando vou mandar esses email o servidor da pau.

eu estava fazendo assim, mais o servidor não consegue enviar todos os mailing, o mesmo da um erro de “out of memory”

   //pego uma colecao de todos value object Mailing
   List listMailing = getCollection();   

   for(int i =0; i < listMailing.size(); i++){
      MailingValue value = (MailingValue) listMailing.get(i);
      sendMail(value); //enviando o email
   }
   //retorna o seu fluxo normal

mas como eu disse o servidor não consegue alocar tantos objetos na memoria e toda vez que esse mailing era enviado o mesmo dava pau

dei um pequena melhorada no codigo e fiz assim, criei um atributo na tabela de mailing p/ armazenar o news Letter enviado, para fazer um busca menor e somente os mailing não enviado, com isso o codigo ficaria assim:

   //pego uma colecao de 50 value object Mailing, sendo q não posso enviar o mesmo newLetter para o mesmo value ja enviado
   List listMailing = getCollection("from MailingValue mailing where fkboletimeletronico<>"+ boletimValue.getPkBoletimEletronico() +",55);   

   for(int i =0; i < listMailing.size(); i++){
      MailingValue value = (MailingValue) listMailing.get(i);
      sendMail(value); //enviando o email
      facade.save(value); //fazendo update no registro, p/ constar q o mesmo ja foi enviado
   }
   //ao final disso chamo a mesma pagina ate o termino do envio
   if(listMailing.size() == 0)
     //terminei de enviar todos, agora retorna o seu fluxo normal

ao termino do envio dos 50 mailing eu chamo a mesma pagina para terminar o processamento

mesmo assim a solução esta sobrecaregando o servidor, alguem tem uma receita magica para resolver esse tipo de problema?

Obrigado…

Crie um array de InternetAddress, e depois é só invocar o método setRecipients da classe Message.

Bota todo mundo no BCC (Cópia oculta) e deixa o prego pro servidor de SMTP. :lol: Eles são feitos pra resolver esse tipo de coisa… :twisted:

legal vou começar a implementar colocando todos os mailing como copia oculta.

alguem sabe se existe alguma restrição sobre a quantidade de mailing que eu posso enviar como copia oculta?

Manda em blocos de X emails :wink:

:scrambleup: Pô! E-mail em massa é sacanagem! :x

Onde está ocorrendo o out-of-memory? No servidor que gera os emails ou no teu MTA? Se é no que gera os emails, o teu programa que tá com algum bug mantendo muitos objetos em memoria.

Já tive que fazer esse tipo de serviço e com javamail mandei muitos milhares de emails em poucos minutos pro MTA, que ficou com 1 fila mostruosa e levou algumas horas para voltar ao normal.

no servidor que gera os email…

CCO é legal, ams se você rpecisa personalizar o e-mail mandar em lotes é mesmo uma boa. Existem SMTPs terceirizados que não aceitam mais que um determinado número, o do Terra só aceitava uns 500 da última vez que enviei uma newsletter.

Ah, eu acredito de coração que isto é uma newsletter e que o subject do seu e-mail não é

[]s[/code]