Pergunta

Atualmente estou percorrendo um leitor de dados e chamando o método Send() do System.Net.Mail.SmtpClient.O problema com isso é que é lento.Cada e-mail leva cerca de 5 a 10 segundos para ser enviado (é possível que seja apenas um problema com meu host).Tive que substituir o padrão de execuçãoTimeout em meu arquivo web.config (o padrão é 90 segundos) assim:

 <httpRuntime executionTimeout="3000" />

Uma advertência:Estou em um host compartilhado, então não acho que seja possível enviar usando a opção PickupDirectoryFromIis (pelo menos, ocorreu erros quando a liguei).

Foi útil?

Solução

Você pode enviar o email assíncrono.Dessa forma, o tempo limite não deve interromper o seu envio.

Este artigo deve ajudá-lo a começar com isso: Envio de e-mails de forma assíncrona em C#.

Há outra abordagem aqui: http://www.vikramlakhotia.com/Sending_Email_asynchronously_in_AspNet_20.aspx

E claro que existem vários clientes comerciais disponíveis, mas o único que experimentei e posso recomendar é http://www.aspnetemail.com/

Outras dicas

Definitivamente, gere-o em um processo de trabalho em segundo plano para que eles saiam de forma assíncrona.

Aliás, 5 a 10 segundos por e-mail parecem muito lentos para mim.No meu servidor, leva apenas frações de segundo por e-mail.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top