CDO.Message дает «Доступ запрещен» в Windows Server 2008 - PullRequest
1 голос
/ 04 декабря 2009

У меня есть классическая ASP-страница, которая создает объект CDO.Message для отправки электронной почты. Код работает на Windows Server 2003, но не на 2008. В 2008 появляется ошибка «Отказано в доступе» Вот простая тестовая страница, которую я написал для диагностики проблемы. Как я могу заставить это работать на Windows Server 2008?


dim myMail
Set myMail=CreateObject("CDO.Message")
If Err.Number <> 0 Then
    Response.Write ("Error Occurred: ")
    Response.Write (Err.Description)
Else
    Response.Write ("CDO.Message was created")
    myMail.Subject="Sending email with CDO"
    myMail.From="sender@mycompany.com"
    myMail.To="recipient@mycompany.com"
    myMail.TextBody="This is a message."
    myMail.Send
    set myMail=nothing
End If

Ответы [ 2 ]

0 голосов
/ 08 февраля 2011

Пока вы используете SMTP-сервер Microsoft (1), вы можете использовать обозреватель метабазы ​​IIS для предоставления группе чтения IIS_USRS (2) права на чтение и чтение / LM / SmtpSvc / и / LM / SmtpSvc / 1 / узлы в метабазе IIS.

К сожалению, это решение не применимо к Windows 7. Microsoft не поставляет SMTP-сервер с Windows 7, что очень затрудняет решение этой проблемы без рефакторинга кода.

(1) См. http://www.itsolutionskb.com/2008/11/installing-and-configuring-windows-server-2008-smtp-server

(2) См. http://blogs.msdn.com/b/akashb/archive/2010/05/24/error-cdo-message-1-0x80040220-the-quot-sendusing-quot-configuration-value-is-invalid-on-iis-7-5.aspx

0 голосов
/ 08 января 2010

Я никогда не получал объект CDO.Message для работы в Windows Server 2008. Однако я нашел обходной путь. Я написал класс электронной почты, который работает на Windows Server 2008. Надеюсь, что это поможет кому-то еще.

[ComVisible(true)]
public class Email
{
    public bool SendEmail(string strTo, string strFrom , string strSubject, string strBody)
    {
        bool result = false;

        try
        {
            MailMessage message = new MailMessage();
            SmtpClient client = new SmtpClient("smtp.mycompany.com");

            List<string> to = recipientList(strTo);
            foreach (string item in to)
            {
                message.To.Add(new MailAddress(item));
            }
            message.From = new MailAddress(strFrom);
            message.Subject = strSubject;
            message.Body = strBody;

            client.Send(message);

            result = true;
        }
        catch
        {
            result = false;
            throw;
        }
        return result;
    }

    private List<string> recipientList(string strTo)
    {
        List<string> result = new List<string>();
        string[] emailAddresses = strTo.Split(new Char[]{',',';'});
        foreach (string email in emailAddresses)
        {
            result.Add(email.Trim());
        }
        return result;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...