如何使用 IIS8 和 Classic ASP 通过 SMTP 服务发送电子邮件?
How to send email with SMTP service with IIS8 and Classic ASP?
我正在尝试使用经典 ASP 和 IIS 8.5 发送电子邮件,为此我在 IIS 中使用 SMTP 服务(无 SMTP 服务器),并使用 Gmail 中的电子邮件帐户。
我在测试页面时的错误信息是:
CDO.Message.1 错误 '80040213'
连接服务器时出现运输错误。
/anotala/prueba-Email.asp, línea 38
我的 ASP 代码是:
Set objConfig = Server.CreateObject("CDO.Configuration")
Set Fields = objConfig.Fields
With Fields
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = "smtp.gmail.com"
.Item(cdoSMTPServerPort) = 25
'.Item(cdoSMTPConnectionTimeout) = 10
.Item(cdoSMTPAuthenticate) = cdoBasic
.Item(cdoSendUserName) = "emailaccount@gmail"
.Item(cdoSendPassword) = "pwd123"
.Update
End With
Set objMessage = Server.CreateObject("CDO.Message")
Set objMessage.Configuration = objConfig
With objMessage
.To = "to@gmail.com"
.From = "from@gmail.com"
.Subject = "Prueba Nro. 1"
.TextBody = "Este es el cuerpo de la prueba Nro. 1"
.Send
End With
这是 IIS 的配置:
我想知道问题出在哪里,如何解决?
http://www.w3schools.com/asp/asp_send_email.asp
https://support.google.com/a/answer/176600?hl=es
从您的代码看来,您似乎是在使用 IIS 配置的代码中设置 smtp 连接。我不相信您可以将 IIS 配置与 CDOSYS 一起使用(参见此处的答案:)。您已经在代码中正确设置了它,但是这一行
.Item(cdoSMTPServer) = "smtp.gmail.com"
表示您正在使用 google 的 smtp 连接的仅 SSL 版本。这实际上很好,因为您可能无论如何都想加密您的用户名和密码,而不是以纯文本形式发送它们。不过,您需要告诉 CDOSYS 使用 SSL。您可以首先使用基于 Google 的 API 的正确端口来做到这一点,所以我会将您的端口行更改为:
.Item(cdoSMTPServerPort) = 465
然后您需要设置启用 SSL 添加另一个常量
Const cdoSendTLS = "http://schemas.microsoft.com/cdo/configuration/smtpusessl"
并像这样将项目行添加到您的字段块中
.Item(cdoSendTLS) = 1
来源:
http://webcheatsheet.com/asp/sending_email_asp.php#remoteservergmail
我正在尝试使用经典 ASP 和 IIS 8.5 发送电子邮件,为此我在 IIS 中使用 SMTP 服务(无 SMTP 服务器),并使用 Gmail 中的电子邮件帐户。
我在测试页面时的错误信息是:
CDO.Message.1 错误 '80040213' 连接服务器时出现运输错误。 /anotala/prueba-Email.asp, línea 38
我的 ASP 代码是:
Set objConfig = Server.CreateObject("CDO.Configuration")
Set Fields = objConfig.Fields
With Fields
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = "smtp.gmail.com"
.Item(cdoSMTPServerPort) = 25
'.Item(cdoSMTPConnectionTimeout) = 10
.Item(cdoSMTPAuthenticate) = cdoBasic
.Item(cdoSendUserName) = "emailaccount@gmail"
.Item(cdoSendPassword) = "pwd123"
.Update
End With
Set objMessage = Server.CreateObject("CDO.Message")
Set objMessage.Configuration = objConfig
With objMessage
.To = "to@gmail.com"
.From = "from@gmail.com"
.Subject = "Prueba Nro. 1"
.TextBody = "Este es el cuerpo de la prueba Nro. 1"
.Send
End With
这是 IIS 的配置:
我想知道问题出在哪里,如何解决?
http://www.w3schools.com/asp/asp_send_email.asp https://support.google.com/a/answer/176600?hl=es
从您的代码看来,您似乎是在使用 IIS 配置的代码中设置 smtp 连接。我不相信您可以将 IIS 配置与 CDOSYS 一起使用(参见此处的答案:)。您已经在代码中正确设置了它,但是这一行
.Item(cdoSMTPServer) = "smtp.gmail.com"
表示您正在使用 google 的 smtp 连接的仅 SSL 版本。这实际上很好,因为您可能无论如何都想加密您的用户名和密码,而不是以纯文本形式发送它们。不过,您需要告诉 CDOSYS 使用 SSL。您可以首先使用基于 Google 的 API 的正确端口来做到这一点,所以我会将您的端口行更改为:
.Item(cdoSMTPServerPort) = 465
然后您需要设置启用 SSL 添加另一个常量
Const cdoSendTLS = "http://schemas.microsoft.com/cdo/configuration/smtpusessl"
并像这样将项目行添加到您的字段块中
.Item(cdoSendTLS) = 1
来源:
http://webcheatsheet.com/asp/sending_email_asp.php#remoteservergmail