O envio de muitos e-mails usando o SmtpClient (C #) demora muito tempo depois de um tempo

1

Estou usando este trecho de código para enviar um e-mail:

SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Send(mailMessage);

Se eu acionar esse código dez vezes / segundo, depois de algumas centenas de e-mails, o envio de um e-mail leva 10 segundos ... Poderia haver uma fila envolvida aqui?

    
por Lieven Cardoen 18.04.2010 / 14:24

2 respostas

5

Parece que o servidor de e-mail está forçando esse atraso, provavelmente para evitar spam: link .

Qual servidor de e-mail você está usando? Como está configurado? Você está usando SMTP autenticado ou não autenticado para enviar e-mails?

    
por 18.04.2010 / 15:04
1

Como Massimo disse, muitos servidores SMTP inteligentes têm uma capacidade de aceleração. Também pode ser limitado externamente ao servidor SMTP usando a limitação de rede.

Se o seu código está bloqueando, você deve enviá-lo de forma assíncrona. Você pode usar o método .SendAsync () no SmtpClient, que não é o meu favorito, ou usar algo como o SmartThreadPool para criar um thread para cada mensagem.

Se você estiver enviando esses dados de forma assíncrona, não será possível incluir a mensagem em uma instrução using (), portanto, será necessário chamar .Dispose () no MailMessage ou haverá problemas de recursos.

    
por 18.04.2010 / 18:53