Microsoft VBScript运行时错误:权限被拒绝:创建CDONTS.NEWMAIL时出现'CreateObject'

时间:2014-05-15 16:52:19

标签: vbscript asp-classic permission-denied

我正在改变用经典asp编写的网站。

我的系统是Windows 7 64位。

在将其设置为在IIS6上运行的经典asp后,我能够让网站运行。

当它尝试执行以下代码时,我收到权限被拒绝错误:

    from1 = "Kevin@company.com"

    to1 = "staff1@company.com"
    to2 = "staff2@company.net"
    to3 = "staff3@client.com"

    strTo = to1
    If Len(strTo) > 0 Then
        If Len(to2) > 0 Then
            strTo = strTo & ";" & to2
        End If
    Else
        strTo = to2
    End If

    If Len(strTo) > 0 Then
        If Len(to3) > 0 Then
            strTo = strTo & ";" & to3
        End If
    Else
        strTo = to3
    End If


    body = reqApprName & "<br />" & reqApprPhone & "<br />" & reqApprEmail & "<br />Loan Number: "_
        & loannum & "<br /><br />Please do not reply back to this email.  The Vendor has provided the following "_
        & "comment associated with this order.<br /><br />" & reqUndueInfluenceComment

    Set ObjMail = CreateObject("CDONTS.Newmail")
    ObjMail.From = from1
ObjMail.To = strTo
ObjMail.Subject = "Appraisal Order "&OrderNum&" by Vendor"
    ObjMail.BodyFormat = 0
    ObjMail.MailFormat = 0
    ObjMail.Body = body
ObjMail.Send
Set ObjMail = Nothing
我很困惑,因为我之前从来没有遇到过CDONTS的问题。然后,我再也没有尝试过使用32位经典的asp在Windows 7 64位机器上使用它。

有没有人有任何想法?

谢谢,所有。

PS:我在CDONTS.NewMail

的创建对象上收到错误

1 个答案:

答案 0 :(得分:3)

当您尝试发送邮件时,您可能会收到以下错误消息:

Microsoft VBScript runtime error '800a0046' Permission denied

当应用程序在IIS中运行进程外时会发生此问题。

发生此问题时,该进程的用户上下文从可以访问IIS元数据库的IUSR_MachineName帐户更改为无权访问IIS元数据库的IWAM_MachineName帐户。

通常,此错误有两个原因。

  • 原因1

正在运行.asp页面或脚本正在运行的用户没有对分拣目录的权限。

通常,分拣目录位于以下位置:

仅适用于运行IIS的计算机: C:\的Inetpub \ Mailroot \拾音器

对于运行Microsoft Exchange 5.5的计算机: EXCHSRVR \ Mailroot \拾音器

对于运行Exchange 2000的计算机: \ Program files \ Exchsrvr \ Mailroot \ Vsi#\ Pickup

<强>解决方案

The user under whom the .asp page is running or the script is running must have Modify (Change) permission to the Pickup directory so that the NewMail object can create the .eml file.

  • 原因2

页面在其自己的内存空间中运行,并且被拒绝访问IIS元数据库。要验证这一点,请按以下步骤操作:

单击“开始”,单击“运行”,键入Inetmgr,然后单击“确定”。

右键单击根目录或包含页面的虚拟目录,然后单击“属性”。

如果在步骤2中右键单击根目录,请单击“主目录”选项卡。

如果在步骤2中右键单击虚拟目录,请单击“虚拟目录”选项卡。

在运行Windows NT的计算机上,确定是否选中“在单独的内存空间中运行”复选框。

如果选中“在单独的内存空间中运行”复选框,请单击以清除该复选框。或者,在SMTP服务的“属性”菜单上,单击“运算符”选项卡,然后添加IWAM_MachineName帐户。

在运行Windows 2000的计算机上,确定“应用程序保护”设置是否设置为“高(隔离)”。如果Application Protection设置设置为High(Isolated),请将Application Protection设置设置为Medium(Pooled)。或者,在SMTP服务的“属性”菜单上,单击“安全”选项卡,然后将IWAM_MachineName帐户添加到“操作员”帐户。

Support.Microsoft.com