0

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

直到昨天一切正常,但突然间,页面给出了一个通用的 500 错误。所以我从页面底部开始发现,如果我将 response.end 放在 cdo 邮件功能的 .send 之前,则页面可以正常工作:

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 邮件服务器 SMTP 不可能。Codice errore di trasporto: 0x800ccc6f。Risposta del server: 554 由于发送 MTA 的声誉不佳,您对该邮件系统的访问已被拒绝。

4

1 回答 1

1

根据您的错误消息,CDO 组件正在工作,但您的 SMTP 服务器 (MTA) 拒绝该消息。也许是因为 .gov 域?无论如何,您在垃圾邮件方面的 SMTP 声誉都很差。您需要使用不同的 SMTP 服务器。如果您使用的是 IIS 服务器的 ip,则该 IP 不再好,并且已被垃圾邮件服务器列入黑名单。

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

于 2012-11-27T09:28:30.753 回答