CDOSYS:如何检查它是否有效?

时间:2012-11-20 10:33:32

标签: asp-classic cdo.message

在客户端服务器上,我们有一个小脚本,在订单结束时发送电子邮件,就在关闭之前。

直到昨天一切正常,但突然之间,页面出现了一般性的500错误。 所以我从页面底部开始发现,如果我在cdo mail函数的.send之前放了一个response.end,那么页面工作正常:

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields

Flds(cdoSendUsingMethod) = cdoSendUsingPort
Flds(cdoSMTPServer) = "mail.theserver.com" 
Flds(cdoSMTPServerPort) = 25
Flds(cdoSMTPAuthenticate) = cdoAnonymous '0
Flds.Update             

With iMsg
    Set .Configuration = iConf                        
         .To = "mymail@mail.com"
         .From = "amail@mail.gov"
         .Sender = ""
         .Subject = "test"                   
         .HTMLBody = "TEST"
         RESPONSE.END()
         .Send
End With

在页面上,开头还有两行:

<!--METADATA TYPE="typelib" UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" NAME="CDO for Windows 2000 Type Library" -->
<!--METADATA TYPE="typelib" UUID="00000205-0000-0010-8000-00AA006D2EA4" NAME="ADODB Type Library" -->

好吧,我已经做了一些测试,把一些脚本用来发送与这个有点不同的电子邮件,但似乎没什么用。有人知道测试cdosys的方法吗?一些东西。我不知道,返回版本......或选项列表......好吧,让我知道错误在服务器上的东西(所以我可以给他们打电话告诉他们“嘿,这不是我的错“)...

编辑: 由于页面只给出500错误,有没有办法让服务器返回更具体的错误代码?我无法访问服务器,但只能访问ftp(所以只有经典的asp)

编辑2:我已添加此代码:

on error resume next
.Send
If Err.Number <> 0 Then
Response.write(Err.Number)
response.write("<br>")
response.write(Err.description)
end if

它给出了这条消息:

-2147220975 Impossibile inviare il messaggio al server SMTP。 Codice errore di trasporto:0x800ccc6f。 Risposta del服务器:554由于发送MTA的声誉不佳,您对此邮件系统的访问权被拒绝。

1 个答案:

答案 0 :(得分:1)

根据您的错误消息,CDO组件正在运行,但您的SMTP服务器(MTA)正在拒绝该消息。也许是因为.gov域名?无论您对垃圾邮件的SMTP声誉不佳。您需要使用其他SMTP服务器。如果您正在使用IIS服务器的IP,那么IP不再是好的,并且已被垃圾邮件服务器列入黑名单。

Mailchimp有很多关于邮件可交付成果的信息。看看吧。 您可以使用托管的SMTP服务(mailgun,sendgrid,mandrill),如果您发送垃圾邮件,所有这些服务都会立即阻止您。