Классический ASP, отправка электронной почты на Windows Server 2008 - ошибка «8004020f» - PullRequest
4 голосов
/ 07 июля 2011

Я пытаюсь отправить электронное письмо с классическим ASP (я застрял со старым приложением, поэтому мне нужно использовать классический ASP здесь) на Windows Server 2008 R2, IIS 7.5.

Я предполагаю, что многое изменилось с win server 2003 на 2008. Я использую следующий код, но получаю эту ошибку (кстати, сообщение об ошибке настолько "информативно");

ошибка '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>"

%>

Кроме того, я только что установил MAPI-клиент Microsoft Exchange Server и объекты данных совместной работы 1.2.1 из http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=1004 на свой сервер, но это ничего не изменило.

ПРИМЕЧАНИЕ: Я мог бы отправлять электронную почту через localhost, если он работает. не имеет значения.

1 Ответ

4 голосов
/ 07 июля 2011

Вы можете столкнуться со следующей ошибкой:

ошибка '8004020f' Класс событий для этой подписки находится в

неверный раздел

Это сообщение об ошибке приходит из cdosys.h и не имеет никакого отношения к какому-либо «разделу» - оно фактически смешано с другими ошибками в перегруженном сообщении. Код ошибки фактически относится к следующему:

CONST LONG CDO_E_RECIPIENTS_REJECTED = 0x8004020FL

Это означает, что электронная почта была отклонена сервером по какой-то причине. Вот некоторые вещи, которые вы можете попробовать решить:

  1. Убедитесь, что SMTP-сервер разрешает анонимную (неаутентифицированную) ретрансляцию. Если ваш SMTP требует исходящей аутентификации, см. Article # 2026 .

  2. Проверьте, относится ли проблема к доменным именам, используемым в адресах электронной почты получателей. Например, некоторые пользователи жаловались, что могут отправлять сообщения пользователям только на своем домене; другие сказали, что могут отправлять на любой домен, кроме своего (см. Article # 2511 для ознакомления с некоторыми потенциальными причинами и решениями).

  3. Возможно, адрес электронной почты просто отклоняется, но другие параметры конфигурации на SMTP-сервере не позволяют пересылать настоящее сообщение об ошибке обратно в сценарий ASP ... поэтому убедитесь, что адрес действителен.

  4. Если у вас есть прокси или брандмауэр, убедитесь, что веб-сервер настроен для правильной передачи через него, что SMTP-сервер знает об этом и что прокси-сервер разрешает доступ к порту 25.

  5. Попробуйте использовать значение SendUsing 1 (пикап) вместо 2 (порт). Например. следующая строка:

    .Item(cdoSendUsingMethod) = cdoSendUsingPort
    

Становится

.Item(cdoSendUsingMethod) = cdoSendUsingPickup

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

...