Sql语句访问WEB
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
CREATE PROC callSendMailPAGE
@url VARCHAR(1000)
AS
BEGIN
DECLARE @xmlHttp INT,@error INT
EXEC @error = sp_OACreate "Microsoft.XMLHTTP",@xmlHttp OUTPUT
EXEC @error = sp_OAMethod @xmlHttp,'Open',NULL,'POST',@url,'True'
EXEC @error = sp_OAMethod @xmlHttp,'Send',NULL,NULL
EXEC @error = sp_OAMethod @xmlHttp,'Close',NULL
EXEC @error = sp_OADestroy @xmlHttp
END
JOB里执行 EXEC callSendMailPAGE 'http://www.yourdomain.com/mysendmail.aspx'
这种做法,实际上是, 用sqlagent服务充当了你的winform+timer或自定义的windows service. 通过sp_oa系列存储过程调用xmlhttp访问你的mysendmail.aspx来实现发送邮件.当然,你可以在页面加上对应的参数,只有参数正确才触发发送邮件方法.这样,当某人无意访问了你这个地址时,页面也不会发送邮件.只通过这个存储过程来执行.
这也算是懒人做法,如果是我,我有可能也是这么弄,懒得写windows service.
要么就不用mysendmail.aspx这个东西.全部在数据库端实现,即 sp_oa系列过程来调用jmail或cds. 或者直接用sqlmail处理.