J'ai un service .NET qui traite une file d'attente sur un thread d'arrière-plan et à partir des éléments de la file d'attente envoie un grand nombre de petits messages électroniques à un très taux élevé (disons 100 messages par seconde si c'est même possible). Actuellement, j'utilise SmtpClient.Send()
mais je crains que cela puisse entraver les performances.Envoyer un courrier SMTP à un taux élevé dans .NET
Chaque appel à Send()
passe par un cycle complet d'ouverture du socket, en exécutant la conversation SMTP (HELO, MAIL FROM, RCPT TO, DATA) et en fermant le socket. Dans le code pseudo:
for each message {
open socket
send HELO
send MAIL FROM
send RCPT TO
send DATA
send QUIT
close socket
}
(Modifier. Cette déclaration sur SmtpClient.Send()
est en fait faux comme je l'ai expliqué dans ma réponse)
Je pense que le pseudo-code suivant serait plus optimale:
open socket
send HELO
for each message {
send MAIL FROM
send RCPT TO
send DATA
}
send QUIT
close socket
Dois-je être préoccupé par la performance de SmtpClient.Send()
lors de l'envoi courriel à un taux élevé? Quelles sont mes options pour optimiser la performance?
ces messages sont-ils généralement les mêmes, mais à des destinataires différents, ou le contenu de l'e-mail est-il différent? –
@Rob Levine: Même destinataire, mais contenu différent. –
À des centaines de seconde? Qui sur Terre veut être enterré sous tant d'e-mail? –