2011-07-07 274 views
4

我試圖發送電子郵件與傳統的ASP(我繼續使用舊的應用程序,所以我要在這裏使用傳統的ASP)在Windows Server上2008 R2,IIS 7.5。經典ASP,發送電子郵件在Windows Server 2008 - 錯誤「8004020f」

我想很多事情的變化,從服務器贏得2003年至2008年,我用下面的代碼,但我得到這個錯誤(BTW,錯誤信息是如此的「信息」);

error '8004020f'

/poo.asp, line 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 = "[email protected]" 
     .To = "[email protected]" 
     .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>" 

%> 

另外,我剛剛安裝的Microsoft Exchange Server MAPI客戶端和協作數據對象1.2.1http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=1004到我的服務器,但它並沒有改變任何東西。

注意:我可以通過本地主機發送電子郵件,如果它工作。沒關係。

回答

4

您可能會遇到以下錯誤:

error '8004020f' The event class for this subscription is in an

invalid partition

此錯誤消息來自cdosys.h,並沒有任何與任何形式的「分區」 - 它實際上是與其他錯誤集中在一個重載的消息。錯誤代碼實際上是歸因於以下情況:

CONST LONG CDO_E_RECIPIENTS_REJECTED = 0x8004020FL 

這意味着電子郵件由服務器由於某種原因被拒絕。以下是一些您可以嘗試緩解問題的方法:

  1. 確保SMTP服務器允許匿名(未經身份驗證)中繼。如果您的SMTP需要傳出驗證,請參閱Article #2026

  2. 檢查問題是否特定於收件人的電子郵件地址中使用的域名(或多個)。例如,一些用戶抱怨他們只能發送給自己域中的用戶;其他人則表示他們可以發送到除自己以外的任何域(有關某些潛在原因和解決方案,請參見Article #2511)。

  3. 它可能只是簡單的電子郵件地址被拒絕,但SMTP服務器上的其他配置設置阻止真正的錯誤消息被正確地中繼到ASP腳本...因此請驗證地址已驗證。

  4. 如果你有一個代理服務器或防火牆,請確保網絡服務器設置爲正確穿過它,SMTP服務器知道它,並且該代理允許訪問端口25

  5. 嘗試使用1(拾取)而不是2(端口)的SendUsing值。例如。下面一行:

    .Item(cdoSendUsingMethod) = cdoSendUsingPort 
    

變爲

.Item(cdoSendUsingMethod) = cdoSendUsingPickup 

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

+3

確定你只是複製和粘貼,我已經看過 – tugberk

+0

我使用asp.net發送電子郵件的文章System.Net類很容易在同一臺服務器上運行。你認爲我需要指定密碼和用戶名嗎? – tugberk

+2

您嘗試發送電子郵件的服務器拒絕電子郵件收件人。如果它在CDO之外工作,請嘗試使用localhost作爲SMTP服務器。 –

相關問題