Senden von 2000 E-Mails

Ist es in Ordnung, einen SMTP-Client einmal zu instanziieren und 2.000 E-Mails synchron zu senden?

Beim Instanziieren eines SMTP-Clients für jede Nachricht, die wir mit dem Code senden, der ebenfalls am Ende dieses Beitrags eingefügt wurde, wird der folgende Fehler angezeigt:

System.Net.Mail.SmtpException: Dienst nicht verfügbar, Übertragungskanal wird geschlossen. Die Serverantwort lautete: 4.4.1 Zeitüberschreitung bei der Verbindung

Ich vermute, dass das Instantiieren des SMTP-Clients für jede Nachricht dies verursacht, aber nicht sicher ist. Code ist wie folgt.

List<MailMessage> messages = GetMailMessages();
foreach( MailMessags m in messages)
{
    try
    {
        SmtpClient client = new SmtpClient();//SHOULD THIS BE PLACED OUTSIDE AND BEFORE THE LOOP
        client.Send(m);
    }
    catch (Exception)
    {
        throw;
    }
}

EDIT 1:

Ich habe das gerade bei MSDN gefunden. (http://msdn.microsoft.com/en-us/library/ee706942%28v=vs.110%29.aspx). Wenn Sie also Massen-E-Mails versenden, müssen Sie den SMTP-Client nur einmal instanziieren und für alle MailMessages wiederverwenden.

Die von der aktuellen Instanz der SmtpClient-Klasse hergestellte Verbindung zum SMTP-Server kann erneut verwendet werden, wenn eine Anwendung mehrere Nachrichten an denselben SMTP-Server senden möchte. Das ist
Besonders nützlich, wenn Authentifizierung oder Verschlüsselung verwendet werden, um eine Verbindung zum SMTP-Server herzustellen. Das Authentifizieren und Einrichten einer TLS-Sitzung kann kostspielige Vorgänge sein. Das erneute Herstellen einer Verbindung für jede Nachricht, wenn eine große Menge von E-Mails an denselben SMTP-Server gesendet wird, kann sich erheblich auf die Leistung auswirken. Es gibt eine Reihe von Massen-E-Mail-Anwendungen, die E-Mail-Statusaktualisierungen, Newsletter-Verteilungen oder E-Mail-Benachrichtigungen senden.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage