Ошибка CDO.Message.1 '80070005' Доступ запрещен.

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

CDO.Message.1 error '80070005' 

Access is denied. 

/mail.asp, line xxx 

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

  MailBodyText = "TEST"

  Set objNewMail = CreateObject("CDO.Message")
  objNewMail.To =  sSendTo
  objNewMail.From = "[email protected]"
  objNewMail.Cc = "[email protected]"
  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? Таким образом, мы можем подтвердить разрешения

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


person Pbearne    schedule 07.06.2010    source источник


Ответы (3)


Используйте свойство .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
person Gabriele Petrioli    schedule 07.06.2010
comment
спасибо за это, но я не пытаюсь отправить почту на удаленный сервер, просто заставить его работать на локальном ящике. - person Pbearne; 07.06.2010
comment
@Pbearne, вы можете установить каталог раскладки через свойство .configuration (обновленный ответ) - person Gabriele Petrioli; 08.06.2010
comment
Спасибо за дополнительный пример кода, он работает на сервере разработки. Я ненавижу указывать пути в коде. но я могу жить с этим - person Pbearne; 09.06.2010

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

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

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

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

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

person Combinatix    schedule 16.07.2014
comment
Это должен быть принятый ответ, так как это причина сообщения Access Denied. Группа IIS_IUSRS содержит учетные записи ApplicationPoolIdentity для каждого сайта на сервере, поэтому, если вы настраиваете это на уровне сервера, этот подход отлично работает. Просто помните, что вашей папке раскладки необходимо предоставить IIS_IUSRS по крайней мере modify разрешение, иначе вы продолжите получать сообщение об ошибке. - person user692942; 18.07.2014
comment
Однако связанная статья предназначена для другой ошибки (Error:CDO.Message.1 (0x80040220) The "SendUsing" configuration value is invalid on IIS 7.5), и в этом случае добавление разрешений к IIS metabase ничего не даст, проблема заключается в разрешениях папки для папки раскладки. - person user692942; 18.07.2014

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

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), я нашел этот блог чрезвычайно полезен.

ОБНОВЛЕНИЕ:

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

person Michiel    schedule 22.11.2013