0

Как и многие из вас на данный момент, я перемещаю классическое приложение 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, не знают, как настроить это, и тот, кто его создал, с тех пор перешел. Вполне возможно, что здесь отсутствует простая базовая концепция.

ответ

0

Я обнаружил, что смог использовать мой образец сценария Powershell, когда я был зарегистрирован как администратор. Исследования от этого привели меня к post on the IIS forums, у которого есть решение проблемы. К сожалению, теперь это приводит к некоторым мертвым ссылкам, что означает, что он не работает. Было достаточно намеков, однако, чтобы собрать решение:

  1. Загрузите и установите IIS Resource Kit Tools.
  2. Выполнение C:\Program Files (x86)\IIS Resources\Metabase Explorer\MBExplorer.exe в качестве администратора.
  3. Перейдите к /LM/SmtpSvc, щелкните его правой кнопкой мыши и выберите пункт Свойства.
  4. Укажите группы, к которым вы хотите получить доступ. В моем случае оба пользователя и IIS_IUSRS имели доступ только для чтения.
  5. Перейдите к /LM/SmtpSvc/1 и установите одинаковые разрешения для этого узла.
  6. Grant доступ для чтения/записи IIS_IUSRS и пользователям c:\inetpub\mailroot

Таким образом, основная причина в том, что пользователь я пытался выполнить это в разделе не имеет необходимых разрешений.

К сожалению, я не мог понять, как выполнить эти шаги. Сообщение ссылается на сценарий «metaacl.vbs», который я не мог найти нигде; все ссылки, которые утверждают, что они мертвы. Он также должен быть установлен с помощью инструментов IIS Resource Kit, связанных выше, но я не мог найти его нигде на моем сервере.

Если бы вы могли найти, что где-то вы были бы в состоянии выполнить вышеуказанные шаги, как так:

cscript metaacl.vbs IIS://LOCALHOST/SMTPSVC %computername%\IIS_IUSRS R 
cscript metaacl.vbs IIS://LOCALHOST/SMTPSVC/1 %computername%\IIS_IUSRS R 
Смежные вопросы