经典ASP,在Windows Server 2008上发送电子邮件 - 错误'8004020f'

时间:2011-07-07 12:25:34

标签: iis-7 asp-classic iis-7.5 windows-server-2008-r2

我正试图在Windows Server 2008 R2,IIS 7.5上发送带有经典ASP的电子邮件(我被旧应用程序困住,所以我必须在这里使用经典ASP)。

我猜很多东西从win server 2003变为2008.我使用下面的代码但是我收到了这个错误(BTW,错误信息是如此“信息性”);

  

错误'8004020f'

     

/poo.asp,第32行

这是代码;

<!-- 
    METADATA 
    TYPE="typelib" 
    UUID="CD000000-8B95-11D1-82DB-00C04FB1625D"  
    NAME="CDO for Windows 2000 Library" 
-->  
<%  

    'Declare variables 
    Dim sch, cdoConfig, cdoMessage
    sch = "http://schemas.microsoft.com/cdo/configuration/" 

    Set cdoConfig = CreateObject("CDO.Configuration")  

    With cdoConfig.Fields  
        .Item(cdoSendUsingMethod) = cdoSendUsingPort  
        .Item(cdoSMTPServer) = "mail.example.com"
        'Set SMTP port which is 25 by default 
        .Item(sch & "smtpserverport") = 587 
        .Update  
    End With 

    Set cdoMessage = CreateObject("CDO.Message")  

    With cdoMessage 
        Set .Configuration = cdoConfig 
        .From = "info@example.com" 
        .To = "me@example2.com" 
        .Subject = "Sample CDO Message" 
        .TextBody = "This is a test for CDO.message" 
        .Send 
    End With 

    Set cdoMessage = Nothing  
    Set cdoConfig = Nothing  

Response.write "<HTML><head><title>A message has been sent.</title></head><body>A message has been sent.</body></HTML>"

%>

此外,我刚刚将{strong> Microsoft Exchange Server MAPI客户端和协作数据对象1.2.1 从http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=1004安装到我的服务器中,但它没有改变任何内容。

注意:如果有效,我可以通过localhost发送电子邮件。没关系。

1 个答案:

答案 0 :(得分:4)

您可能会遇到以下错误:

  

错误'8004020f'此订阅的事件类位于

中      

无效分区

此错误消息来自cdosys.h,与任何类型的“分区”无关 - 它实际上与重载消息中的其他错误混在一起。错误代码实际上归因于以下内容:

CONST LONG CDO_E_RECIPIENTS_REJECTED = 0x8004020FL

这意味着服务器因某种原因拒绝了电子邮件。以下是一些可以尝试缓解问题的方法:

  1. 确保SMTP服务器允许匿名(未经身份验证)中继。如果您的SMTP需要传出身份验证,请参阅Article #2026

  2. 检查问题是否特定于收件人电子邮件地址中使用的域名。例如,一些用户抱怨他们只能在自己的域上发送给用户;其他人说他们可以发送到除他们自己以外的任何域名(请参阅Article #2511了解一些可能的原因和解决方案)。

  3. 可能只是拒绝了电子邮件地址,但SMTP服务器上的其他配置设置阻止将真正的错误消息中继回到ASP脚本...所以请验证地址有效。

  4. 如果您有代理或防火墙,请确保将Web服务器设置为正确通过它,SMTP服务器知道它,并且代理允许访问端口25.

  5. 尝试使用SendUsing值1(拾取)而不是2(端口)。例如。以下一行:

    .Item(cdoSendUsingMethod) = cdoSendUsingPort
    
  6. 成为

    .Item(cdoSendUsingMethod) = cdoSendUsingPickup
    

    http://classicasp.aspfaq.com/email/why-does-cdo-message-give-me-8004020f-errors.html