Поскольку классический ASP-код должен вызывать внешний компонент на основе COM для отправки электронной почты (это то, что вы делаете, если создаете сообщение CDO - каждый раз, когда в вашем asp-коде есть вызов CreateObject, то есть COM), код asp будет зависать, если внешнему компоненту требуется много времени для ответа.Например, большинство компонентов SMTP будут синхронно пытаться отправить сообщение на SMTP-сервер, блокируя выполнение вашего asp-кода до тех пор, пока сообщение электронной почты не будет отправлено.Это становится проблемой на очень занятых SMTP-серверах, так как они могут очень медленно отвечать на запросы соединения и SMTP-команды.Еще одна неприятная ситуация - многие провайдеры / хосты пытаются снизить скорость отправки электронной почты, целенаправленно заставляя свои SMTP-серверы реагировать медленно.Хуже того, некоторые хосты зашли настолько далеко, что фактически делают последующие соединения в течение заданного периода времени все медленнее.Это может существенно повлиять на производительность вашего сайта, так как вы обычно блокируете код своей страницы во время отправки SMTP.
Лучшим решением будет использование хоста или SMTP-сервера, который не применяет такие ограничительные меры.За исключением этого, есть способ обойти это, используя очереди сообщений.Если вы используете CDO, это означает, что вы должны настроить Microsoft SMTP Service на вашем веб-сервере IIS для использования.Это можно настроить правильно, даже если на компьютере IIS установлено другое программное обеспечение SMTP.После запуска службы SMTP Microsoft на вашем сервере IIS она сможет ставить электронную почту на сервер и асинхронно перенаправлять ее на настроенный SMTP-сервер к коду вашего приложения / страницы.При настройке службы SMTP Microsoft вы должны определить, что она называет «умным хостом».Это просто SMTP-сервер, на который вы собираетесь направить исходящую электронную почту для доставки в вашу сеть.
После того, как вы настроили это, вам просто нужно изменить код, который использует CDO для постановки в очередь сообщения электронной почты вместо того, чтобы пытаться отправить его.В вашем коде CDO у вас должна быть строка, которая устанавливает значения полей CDO, которые выглядят примерно так:
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Вы хотите изменить значение поля "sendusing" со значения 2 на значениеof 1. Это перечисляемые значения для перечислений cdoSendUsingPort (2) и cdoSendUsingPickup (1).Как только вы это сделаете, вы также можете удалить поля «smtpserver» и «smtpserverport», так как они переопределяются тем, как настроена ваша служба Microsoft SMTP.Как только вы это сделаете, ваш asp-код быстро сгенерирует сообщение электронной почты, и оно будет помещено в очередь в папке приема почты сервера IIS.Таким образом, код вашего приложения / страницы будет работать намного быстрее.Исходящие электронные письма потенциально могут накапливаться в папке очереди, поскольку служба SMTP медленно работает над их доставкой в фоновом режиме.Это не делает отправку электронной почты быстрее, но предотвращает блокировку вашего кода из-за медленного SMTP-сервера.