Как и многие из вас на данный момент, я перемещаю классическое приложение ASP с классического приложения ASP с сервера Windows 2003 на Windows 2008. У меня это в основном работает, но я не могу отправлять электронную почту через него. Это происходит потому, что CDOSYS настроен неправильно. Несмотря на то, что 4-6-часовая работа в Google и работа с документацией по API и даже поиск по всем файлам в файловой системе и в системном реестре, мне не удалось выяснить, где это установлено.Как настроить CDOSYS в IIS 7.5 в Windows 2008?
Часть устаревшего приложения ASP.NET работает нормально. Он может отправлять электронную почту на localhost без аутентификации, которые затем передаются на почтовый сервер с аутентификацией для отправки в пункт назначения.
Я перевел VB6 звонки из исходного кода в скрипт Powershell для удобства:
$config = new-object -com "CDO.Configuration";
$config.Load(1);
$smtp = new-object -com "CDO.Message";
$smtp.Configuration = $config;
$smtp.From = "[email protected]"
$smtp.To = "[email protected]"
$smtp.Subject = "test"
$smtp.TextBody = "Message";
$smtp.Send();
Этот скрипт посылает электронную почту правильно на моем исходном сервере. На новом сервере он возвращает эту ошибку при вызове $smtp.Send()
:
Исключения вызова "Отправить" с "0" аргументом (ы):. «The "" значение конфигурации SendUsing недействительно
Конфигурация . между двумя серверами довольно сильно отличается Используя $config
ссылку сверху, я выполнил $config.Fields | Format-List -Property Name,Value
на обоих серверах
Старый сервер (где он работает.):
Name : http://schemas.microsoft.com/cdo/configuration/languagecode
Value : en-us
Name : http://schemas.microsoft.com/cdo/configuration/postusing
Value : 0
Name : http://schemas.microsoft.com/cdo/configuration/sendusing
Value : 1
Name : http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory
Value : D:\Inetpub\mailroot\Pickup
Name : http://schemas.microsoft.com/cdo/configuration/usemessageresponsetext
Value : True
Name : urn:schemas:calendar:timezoneid
Value : 1
Новый сервер:
Name : http://schemas.microsoft.com/cdo/configuration/languagecode
Value : en-gb
Name : http://schemas.microsoft.com/cdo/configuration/postusing
Value : 0
Name : http://schemas.microsoft.com/cdo/configuration/sendusing
Value : 0
Name : http://schemas.microsoft.com/cdo/configuration/usemessageresponsetext
Value : True
Name : urn:schemas:calendar:timezoneid
Value : 0
Кажется, что все, что мне нужно сделать, чтобы сделать эту работу либо настроить его по умолчанию отправлять почту на локальный или уронить почту в каталог раскладки. Сервер SMTP IIS уже настроен для просмотра этого каталога.
Однако я не могу определить, где эти значения установлены. Они должны быть установлены в файле или в реестре где-нибудь, но даже поиск через диск C, ищущий фразы типа «\ Pickup» и «usemessageresponsetext» и т. Д., Ничего не показал. Если они где-то, я думаю, они где-то находятся в двоичном хранилище данных.
Все образцы для CDOSYS включают в себя настройку экземпляра CDO.Configuration или CDO.Message напрямую, но все на протяжении всего кода наше приложение загружает конфигурацию из IIS, поэтому каким-то образом это было задано кем-то одним.
Я пропустил классическую эпоху ASP, поэтому я на очень незнакомой территории. Тем не менее, мои коллеги, которые были активными классическими разработчиками ASP, не знают, как настроить это, и тот, кто его создал, с тех пор перешел. Вполне возможно, что здесь отсутствует простая базовая концепция.