【发布时间】:2016-05-22 19:48:57
【问题描述】:
我正在尝试遍历数据库查询并将电子邮件发送到我从查询中获得的电子邮件地址。 这是我的一段代码。
do until rs.EOF
Set myMail = CreateObject("CDO.Message")
myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="relay-hosting.secureserver.net"
myMail.Configuration.Fields.Update
myMail.Subject= subject
myMail.From="something@Something.Something"
myMail.To = rs("Email")
myMail.HTMLBody = strMessage & "Some Message"
myMail.Send
Set myMail = Nothing
rs.MoveNext
loop
我已经搜索并尝试了不同的解决方案,但没有任何运气。 以下代码行似乎有问题,但我找不到什么
myMail.To = rs("Email")
在给出任何答案或建议之前,请记住,
- 当我在 CDO 消息对象的“TO”属性中使用任何静态电子邮件地址时,此代码工作正常
- 查询给出了准确的结果
- 当我在 CDO 消息对象的“TO”属性中使用动态电子邮件(来自查询的电子邮件)时,我收到 500 内部服务器错误。我无权访问 IIS 以启用详细的错误消息。
【问题讨论】:
-
如果没有实际的错误消息,几乎不可能分辨出来。当您说“准确的结果”时,这是什么意思?查询的返回值是多少,您使用的硬编码值是多少?
-
非常仔细地检查您的查询结果。至少有一个
rs("Email")值不是有效的电子邮件地址。没有其他解释。 -
@SeanLange 从“准确结果”我的意思是查询结果给了我想要的电子邮件地址。我硬编码了我的电子邮件地址以接收电子邮件,并且我收到了它们。但是当我使用动态值时,它会出错。如果您仍然不清楚我的意思,请告诉我
-
正如@Keith 所说,您的值中至少有一个不是有效的电子邮件地址。由于您坚持使用经典的 asp 并且无法让 IIS 为您提供任何有用的东西,您可能不得不求助于严肃的老式日志记录。让您的代码记录每个电子邮件地址,最后一个记录将是错误的。您还可以添加一些错误处理,这样您的代码就不会引发 500 错误。 “错误...”
-
在您自己的机器上启用 IIS 和 ASP 并尝试重现错误...启用详细的错误消息。没有错误消息几乎不可能告诉发生了什么
标签: while-loop asp-classic recordset cdo.message