Ошибка CDO.Message.1 '80070005' Доступ запрещен. - PullRequest
6 голосов
/ 07 июня 2010

Я получаю эту ошибку при попытке отправить через локальный сервер

CDO.Message.1 error '80070005' 

Access is denied. 

/mail.asp, line xxx 

Вот код, который я использую

  MailBodyText = "TEST"

  Set objNewMail = CreateObject("CDO.Message")
  objNewMail.To =  sSendTo
  objNewMail.From = "webmaster@EXAMPLE.com"
  objNewMail.Cc = "webmaster@EXAMPLE.com"
  objNewMail.Subject =  "Information Request & Feedback"
  objNewMail.HTMLBody = "The following information was sent from " & sEmail & ":" & "<br>" & CHR(13) & MailBodyText & "<br>copies of this mail we sent to :"& sSendTo
  objNewMail.Send

  Set objNewMail = Nothing 

Похоже, что это ошибка разрешения на ISSUR не имеет разрешения на запись в папку mailroot / pickup.

Но мы проверили это, и учетная запись служб, которую использует этот сайт, похоже, имеет права.

Вопрос: эта ошибка всегда является ошибкой разрешения файла?

Вопрос, как узнать / установить местоположение, которое использует CDO? Таким образом, мы можем подтвердить разрешения

Что еще нужно посмотреть, чтобы это исправить?

Ответы [ 3 ]

5 голосов
/ 07 июня 2010

Используйте свойство .configuration, которое позволяет выполнять аутентификацию и другие точные настройки.

примеров на: http://www.paulsadowski.com/wsh/cdo.htm

обновление

Свойство .configuration позволяет установить каталог раскладки ( по вашему запросу )

objNewMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1
objNewMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = "c:\inetpub\mailroot\pickup"
objNewMail.Configuration.Fields.Update
objNewMail.Send
4 голосов
/ 16 июля 2014

ЕСЛИ ВЫ НЕ ХОТИТЕ ИЗМЕНИТЬ СВОЙ КОД

Предоставить Группа IIS_IUSRS Доступ на запись в папку c: \ inetpub \ mailroot \ Pickup или любую другую папку, в которую вы входите.

Это должна быть Группа IIS_IUSRS , а не Пользователь IUSR (возможно, вы ошиблись).

Я получил эту ошибку после выполнения действий, указанных в опции 3 на blog.msdn.com

Мне не нужно было менять код ASP. Ваш код отлично работает на моем сервере.

0 голосов
/ 22 ноября 2013

Я переносил некоторые старые классические сайты asp на новый (windows 2008R2) сервер, и у меня была «точно такая же проблема» (ну, по крайней мере, та же ошибка и в основном тот же код). Решение, представленное Gaby:

objNewMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1
objNewMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = "c:\inetpub\mailroot\pickup"

у меня не сработало, у меня все та же ошибка.

После некоторых поисков я нашел это предложение:

myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost" 

(НЕ устанавливайте каталог smtpserverpickup)

Теперь все работает нормально.

Кстати, если вам нужно настроить необходимую службу SMTP на сервере Windows 2008 (IIS7), я нашел этот блог чрезвычайно полезным.

UPDATE:

В соответствии с microsoft sendusing = 1 использует SMTP-сервер, а sendusing 2 использует Outlook Express, я посмотрел на сервере, и похоже, что outlookkexpress или windows mail не установлены, но это настройка работает для меня. Если бы кто-нибудь мог объяснить, что мне любопытно узнать.

...