Email Smtp Asp.net - Fórum DevMedia
Email Smtp Asp.net
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 ?
Vc pode fazer um delay com a classe Thread
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!!!
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",
//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.
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.