Array
(
)

Email Smtp Asp.net

Eduardo Siqueira
   - 25 jan 2011

Olá Pessoal da DevMedia !!
   Bom, vou direto ao assunto. Tenho uma aplicação que envia e-mail via smtp, ela está funcionando só que eu andei pesquisando e quando se usa smtp pra enviar email em massa, ocorre perca de emails.
    A solução e a seguinte: Encontrar algo no C# que eu possa parar a aplicação(por exemplo, estipular 5 segundos antes do envio do próximo e-mail), e ao passar esse intervalo de tempo enviar outro e assim sucessivamente.
 
 Alguém poderia me dá esa força ?
 
  Abraços.

 Atenciosamente,

Eduardo Melo

Rychart
|
MVP
    26 jan 2011

Vc pode fazer um delay com a classe Thread

0
|
0

Netasper
   - 29 jan 2011

Pesquise algo de enfileiramento Queue. Isto irá te ajudar certamente:

http://www.sqlteam.com/article/building-a-mail-queue-system

O proprio SQL ja faz isto sem precisar de uma aplicação!!!

0
|
0

Eduardo Siqueira
   - 29 jan 2011

Pessoal, Eu consegui parar a aplicação com thread... só que quando eu envio e-mails em massa(via smtp), que é o caso descrito no primeiro post há ainda perdas de emails mesmo com o intervalo que eu estipulei  usando thread, agora a minha dúvida é, se alguém mais tem esse problema, e quando eu debuguei o código eu vi a mensagem de erro "Não foi póssivel completar a ação. Fechando canal de transmissão. A resposta para o servidor foi. 4.3.1 rejected",

0
|
0

Rodrigo Odasaki
   - 31 jan 2011


  Olá amigo!

//8 Execuções do código abaixo.             for (int i = 0; i < 8; i++)             {                for (int a = 0; a < 25; a++)                 {                    //ObjSmtp.Send(ObjMail);                }                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(30));            }

Amigo, segue o código acima.
O primeiro for executa o bloco 8 vezes e o segundo for de baixo executa 25 vezes.
Coloquei um delay de 30 segundos..

Ou seja ele faz o envio de 25 mensagens a cada 30 segundos executando em 8 blocos. Total de mensagens: 200.

Lembre-se, se você utilizar uma hospedagem e tiver e-mails padrões da estrutura compartilhada, existem limitações de envios por conta. Uma média de 3 mil por dia e 50 mensagens por minuto!

Veja com o seu provedor sobre essas limitações, se você ultrapassar poderá até ser suspenso, pois vai sobrecarregar o servidor prejudicando outros clientes.

Eu sugiro que você envie por um servidor próprio.

No caso eu recomendo o uso de procedures para este tipo de execução.

0
|
0

Rodrigo Odasaki
   - 31 jan 2011



Citação:
Pessoal, Eu consegui parar a aplicação com thread... só que quando eu envio e-mails em massa(via smtp), que é o caso descrito no primeiro post há ainda perdas de emails mesmo com o intervalo que eu estipulei  usando thread, agora a minha dúvida é, se alguém mais tem esse problema, e quando eu debuguei o código eu vi a mensagem de erro "Não foi póssivel completar a ação. Fechando canal de transmissão. A resposta para o servidor foi. 4.3.1 rejected",
 

Crie um log de todas exceções encontradas, e faça com quem o código continue executando assim mesmo.. Sempre quando o servidor for enviar, pode ter um e-mail onde foi possível enviar. O problema pode ser no seu servidor de envio ou no de recebimento, se necessário encaminhe o log dos envios para o suporte da sua hospedagem.

Utilize sempre um um bloco try e cath e também um throw... 

0
|
0