经典ASP如何使用SMTP验证发送电子邮件

7
我们从一家设计机构那里接手了一个经典的ASP网站,他们只希望我们进行搜索和替换以更改SMTP主机。没问题,我们是PHP公司,但可以处理大多数事情。
进一步调查发现,我们需要使用新的SMTP服务器进行身份验证。
通过一些搜索,我们得知它正在使用ASPMail 4,并且根据文档,它不进行身份验证。
我们刚刚从这个调用中搜索了“SMTPsvg.Mailer”:http://www.serverobjects.com/comp/Aspmail4.htm
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")

我猜测上面提到的是 ASPMail 4,并且 ASPMail 不支持身份验证,我的猜测正确吗?

如果我需要替换 Aspmail,可以用什么来进行 SMTP 服务器身份验证呢?


2
只是想提一下,我对 ASP 一无所知……除了它在 Windows 服务器上运行并引发争论。 - johnwards
3个回答

20

就像之前说的,使用CDO。

set config = CreateObject("CDO.Configuration")
sch = "http://schemas.microsoft.com/cdo/configuration/"
with config.Fields
 .item(sch & "sendusing") = 2 ' cdoSendUsingPort
 .item(sch & "smtpserver") = application("smtpserver")
 .item(sch & "smtpserverport") = application("smtpserverport")
 .item(sch & "smtpauthenticate") = 1 'basic auth
 .item(sch & "sendusername") = application("sendusername")
 .item(sch & "sendpassword") = application("sendpassword")
 .update
end with

with CreateObject("CDO.Message")
  .configuration = config
  .to = ...
  .from = ...
  .subject = ....
  .HTMLBody = ....
  call .send()
end with

你可以在这里查找有关配置对象的每个字段的文档!


对于像我这样的新手,application("sendusername") 应该在其他地方定义。如果你之前没有定义它,可以直接使用 "blabla@blabla.com" - aiternal

1

检查托管提供商是否支持 .Net Framework 2.0(大多数都支持),如果是,则将 .asp 文件重命名为 .aspx,删除发送电子邮件的代码并编写一些简单的代码:

http://www.systemwebmail.com/faq/3.8.aspx

敬礼

Thomas


2
不幸的是,将现有的ASP页面移植到ASP.NET页面通常并不像简单地将文件扩展名从.asp重命名为.aspx那样容易,因为除其他因素外,Microsoft Visual Basic Scripting Edition(VBScript)和Visual Basic .NET之间存在显着差异。 - Shoban
1
不一定需要重写整个页面,只需创建一个mailsender.aspx,接受所需的数据作为POST数据,发送邮件并返回结果值。在我看来,这比使用CDO更好。 - Eduardo Molteni

-3
根据文档这里,ASPMail 4.x不支持身份验证。看起来你需要切换到另一个基于COM的SMTP组件。

3
他在问题中提供了链接 :) - Shoban
为什么在我的回答内容与得到最高票的问题完全相同的情况下,重新发布相同的链接会导致我被点踩呢?只是好奇。 - Dave Swersky
我没有足够的声望来进行反对投票。然而,这可能是因为你在你的问题中链接到了我链接到的相同文档,并且文档中也像我所说的那样说明它不支持身份验证。 - johnwards

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接