Da klassischer ASP-Code eine externe COM-basierte Komponente aufrufen muss, um E-Mails zu versenden (das ist es, was Sie tun, wenn Sie eine CDO-Nachricht erstellen --- jedes Mal, wenn Sie einen CreateObject-Aufruf in Ihrem ASP-Code haben, ist das COM), scheint der ASP-Code zu hängen, wenn die externe Komponente lange braucht, um zu antworten. Zum Beispiel werden die meisten SMTP-Komponenten synchron versuchen, die Nachricht an den SMTP-Server zu senden, was die Ausführung Ihres ASP-Codes blockiert, bis die E-Mail-Nachricht gesendet wurde. Dies wird zu einem Problem bei stark ausgelasteten SMTP-Servern, da diese sehr langsam auf Verbindungsanfragen und SMTP-Befehle reagieren können. Ein weiterer Nachteil ist, dass viele ISPs/Hosts versuchen, die Geschwindigkeit, mit der Sie E-Mails versenden können, zu drosseln, indem sie ihre SMTP-Server absichtlich langsam reagieren lassen. Schlimmer noch, manche Hosts gehen sogar so weit, dass sie die nachfolgenden Verbindungen über einen bestimmten Zeitraum hinweg immer langsamer machen. Dies kann die Leistung Ihrer Website erheblich beeinträchtigen, da Ihr Seitencode während des SMTP-Versands in der Regel blockiert wird.
Die beste Lösung wäre die Verwendung eines Hosts oder SMTP-Servers, der solche restriktiven Maßnahmen nicht durchsetzt. Andernfalls gibt es eine Möglichkeit, dieses Problem durch die Verwendung von Nachrichten-Warteschlangen zu umgehen. Wenn Sie CDO verwenden, bedeutet dies, dass Sie den Microsoft SMTP-Dienst auf Ihrem IIS-Webserver für die Verwendung konfigurieren müssen. Dieser kann auch dann richtig konfiguriert werden, wenn Sie eine andere SMTP-Software auf dem IIS-Rechner haben. Sobald der Microsoft SMTP-Dienst auf Ihrem IIS-Server läuft, kann er E-Mails auf dem Server in eine Warteschlange stellen und sie asynchron zu Ihrem Anwendungs-/Seitencode an den konfigurierten SMTP-Server weiterleiten. Bei der Konfiguration des Microsoft SMTP-Dienstes müssen Sie einen so genannten "Smart Host" definieren. Dabei handelt es sich einfach um den SMTP-Server, an den die ausgehenden E-Mails zur Zustellung in Ihrem Netzwerk weitergeleitet werden sollen.
Sobald Sie das konfiguriert haben, müssen Sie nur noch Ihren Code ändern, der CDO verwendet, um die E-Mail-Nachricht in die Warteschlange zu stellen, anstatt zu versuchen, sie zu senden. In Ihrem CDO-Code sollten Sie eine Zeile haben, die CDO-Feldwerte setzt, die etwa so aussehen:
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Sie möchten den Wert für das Feld "sendusing" von einem Wert von 2 auf einen Wert von 1 ändern. Dies sind die Aufzählungswerte für die Enums cdoSendUsingPort (2) und cdoSendUsingPickup (1). Wenn Sie dies getan haben, können Sie auch die Felder "smtpserver" und "smtpserverport" weglassen, da diese von der Konfiguration Ihres Microsoft SMTP-Dienstes überschrieben werden. Sobald Sie dies getan haben, wird Ihr Asp-Code die E-Mail-Nachricht schnell generieren und sie wird in die Warteschlange des IIS-Server-Ordners für die Postabholung gestellt. So wird Ihre Anwendung / Ihr Seitencode viel schneller ausgeführt. Die ausgehenden E-Mails werden sich möglicherweise im Warteschlangenordner ansammeln, da der SMTP-Dienst langsam im Hintergrund an der Zustellung arbeitet. Dadurch werden die E-Mails zwar nicht schneller versendet, aber es wird verhindert, dass Ihr Code aufgrund eines langsamen SMTP-Servers blockiert wird.