3

我有一个 asp 页面,它使用 CDO 通过电子邮件发送表单的详细信息。到目前为止,我已经通过与 hmail 服务器的明确连接使用 smtp 端口 25 完成了此操作。

我现在需要使用 SSL 连接。我创建了一个安全证书并将 hmail 服务器设置为使用端口 465 和 ssl。

但是,由于某种原因,当我尝试发送表单时,我收到错误 500 并且电子邮件未发送。

我也尝试过使用端口 587,但它也不起作用。

我使用的CDO代码如下:

If request.Form("submit") <> "" then

Set myMail=CreateObject("CDO.Message")
myMail.Subject="xxxxxxx"
myMail.From=Request.Form("email")
myMail.To= "xxxxxxxxxxx"

myMail.TextBody = "Name:"& Request.Form("name")& vbcrlf & vbcrlf & _

"Email:" & Request.Form("email") & vbcrlf & vbcrlf &  _

"Telephone:" & Request.Form("telephone") & vbcrlf & vbcrlf & _

"Location:" & Request.Form("location") & vbcrlf & vbcrlf & _

"Other location:" & Request.Form("other_location") & vbcrlf & vbcrlf & _

"Comments:" & Request.Form("comments")

myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
'Name or IP of remote SMTP server
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
="127.0.0.1"
'Server port
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") _
=465
MyMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
myMail.Configuration.Fields.Update
myMail.Send
set myMail=nothing

有谁知道可能出了什么问题?

谢谢你。

4

2 回答 2

5

我在使用旧版 ASP 代码时遇到了同样的问题。以下代码适用于亚马逊。注意:似乎只有端口 25 或 465 可以工作并且 smtpusessl = 1(在 VBScript True==-1 中)

' Create Connection
Function GetEmailConnection ()
    Set oMail = CreateObject("CDO.Message")
    Set GetEmailConnection = oMail
End function
Function GetConfiguration()
    Set oConfig = CreateObject("CDO.Configuration")
    Set GetConfiguration = oConfig  
End Function

' Send Email

    Sub SendEmail (subject, fromAddress, toAddress, body)
        set objMessage = GetEmailConnection()


    Set objConfiguration = GetConfiguration()

    Set fields = objConfiguration.Fields

    Const cdoSendUsingPort = 2

    With fields
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort 
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "email-smtp.us-east-1.amazonaws.com"
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 ' 
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'basic 
    .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user"
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
    .Update
    End With
    With objMessage
    set .Configuration = objConfiguration
    .Subject = subject 
    .From = fromAddress 
    .To= toAddress
    .TextBody = body
    .Send
    End With
    set objMessage = nothing        
end Sub
于 2013-06-23T19:36:53.273 回答
0

这个帖子有点老了,你已经解决了吗?

如果没有,您能否提供错误消息(通用 500 除外)?

我只有 2 个可能的想法而没有看到实际的错误消息:

1)它可能会超时。尝试添加 myMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

2) 可能证书与“127.0.0.1”IP 地址不匹配,因此 SSL 通信被拒绝。

于 2012-12-13T05:11:35.713 回答