Tengo un servicio .NET que procesa una cola en un hilo de fondo y de los elementos en la cola envía una gran cantidad de mensajes de correo electrónico pequeños a un nivel muy bajo. alta velocidad (digamos 100 mensajes por segundo si eso es posible). Actualmente, uso SmtpClient.Send()
pero me temo que puede obstaculizar el rendimiento.Envío de correo electrónico SMTP a alta velocidad en .NET
Cada llamada a Send()
pasa a través de un ciclo completo de apertura de la toma de corriente, la realización de la conversación SMTP (HELO, MAIL FROM, RCPT TO, DATA) y el cierre de la toma de corriente. En pseudocódigo:
for each message {
open socket
send HELO
send MAIL FROM
send RCPT TO
send DATA
send QUIT
close socket
}
(Editar:. Esta declaración acerca de SmtpClient.Send()
de hecho es falsa como he explicado en mi respuesta)
Me gustaría pensar que el siguiente pseudo código sería más óptimo:
open socket
send HELO
for each message {
send MAIL FROM
send RCPT TO
send DATA
}
send QUIT
close socket
¿Debo estar preocupado por el rendimiento de SmtpClient.Send()
al enviar correo electrónico a un ritmo elevado? ¿Cuáles son mis opciones para optimizar el rendimiento?
¿estos mensajes son iguales, pero para diferentes destinatarios, o el contenido del correo electrónico es diferente? –
@Rob Levine: Mismo destinatario, pero diferente contenido. –
a cientos por segundo? ¿Quién en la tierra quiere ser enterrado bajo ese gran correo electrónico? –