cdoSendUsingPort给出8004020f,但cdoSendUsingPickup有效

时间:2010-10-21 12:33:40

标签: asp-classic vbscript iis-6 smtp

我正在使用cdo发送电子邮件,以下代码失败

Set cdoConfig = CreateObject("CDO.Configuration")

With cdoConfig.Fields
    .Item(cdoSendUsingMethod) = cdoSendUsingPort
    .Item(cdoSMTPServer) = "localhost"
    .Update
End With 

当我发送电子邮件时,我收到以下错误

8004020f

然后我将代码更改为以下内容:

Set cdoConfig = CreateObject("CDO.Configuration")

With cdoConfig.Fields
    .Item(cdoSendUsingMethod) = cdoSendUsingPickup
    .Item(cdoSMTPServer) = "localhost"
    .Update
End With 

电子邮件发送没有问题。我可以采取哪些步骤来解决cdoSendUsingPort无法正常工作的原因?

2 个答案:

答案 0 :(得分:2)

使用cdoSendUsingPort,CDO会尝试在TCP端口25上打开与您指定的SMTP服务器(在您的情况下为localhost)的连接。我猜您没有运行您的计算机上有SMTP服务器,因此没有任何内容正在侦听端口25,并且呼叫失败。

使用cdoSendUsingPickup,CDO将邮件转发到本地IIS实例的pickup directory以供稍后处理。我猜您的计算机上安装了IIS,并且其SMTP模块配置为使用取件,因此呼叫成功。

答案 1 :(得分:1)

教授Google发现(按顺序):
  - Several options:服务器不允许匿名中继,服务器拒绝特定收件人域,SMTP服务器以意外方式拒绝收件人,和/或代理或防火墙设置阻止邮件。
  - Your mailserver is configured to not relay from your source machine.
  - ......以及其他几个归结为所列第一个链接的东西。

您可以通过从发送计算机telnet到邮件服务器performing a normal SMTP interaction直接测试这些内容,并查看显示的消息。