使用SQL2000发送邮件!
2007-08-02 17:53
--在SQL server里面建一个作业,定义运行某个(你写的查询)程序。
--在sql server中定义一个job --定时运行 下面的存储过程 CREATE PROCEDURE sys01_sendmail @From varchar(100),--发件人 @To varchar(100),--收件人 @Bcc varchar(500),--抄送人 @Subject varchar(400),--主题 @Body varchar(4000),--内容 @stmp_server nvarchar(4000),--发送邮件服务器 @email_user nvarchar(4000),--发送邮件服务器登录用户名 @email_pass nvarchar(4000) --发送邮件服务器登录用户密码 as Declare @object int--声明变量 Declare @hr int EXEC @hr = sp_OACreate 'CDO.Message', @object OUTPUT --/*------------------------------------------------------------------------------------------------- -- sp_OACreate 创建OLE对象 的函数 -- CDO.Message 是要创建的 OLE 对象的程序标识符 (ProgID) -- @object OUTPUT 是返回的对象令牌,并且必须是数据类型为 int 的局部变量。 -- 该对象令牌用于标识所创建的 OLE 对象,并将在调用其它 OLE 自动化存储过程时使用。 --*/----------------------------------------------------------------------------------------------------- EXEC @hr = sp_OASetProperty @object, "Configuration.fields('http://schemas.microsoft.com/cdo/configuration/sendusing').Value",'2' --/*------------------------------------------------------------------------------------------------- -- sp_OASetProperty 将 OLE 对象的属性设置为新值。 -- @object 是先前用 sp_OACreate 创建的 OLE 对象令牌。 -- 是要设置新值的 OLE 对象的属性名。 -- 是属性的新值,并且必须是适当数据类型的值。 --*/------------------------------------------------------------------------------------------------ EXEC @hr = sp_OASetProperty @object, "Configuration.fields('http://schemas.microsoft.com/cdo/configuration/smtpserver').Value", @stmp_server --下面三条语句是smtp验证,如果服务器需要验证,则必须要这三句,你需要修改用户名和密码 EXEC @hr = sp_OASetProperty @object, "Configuration.fields('http://schemas.microsoft.com/cdo/configuration/smtpauthenticate').Value","1" EXEC @hr = sp_OASetProperty @object, "Configuration.fields('http://schemas.microsoft.com/cdo/configuration/sendusername').Value",@email_user EXEC @hr = sp_OASetProperty @object, "Configuration.fields('http://schemas.microsoft.com/cdo/configuration/sendpassword').Value",@email_pass EXEC @hr = sp_OAMethod @object, "Configuration.Fields.Update", null --/*------------------------------------------------------------------------------------------------- -- sp_OAMethod 调用 OLE 对象的方法。 -- @object 是先前用 sp_OACreate 创建的 OLE 对象令牌。 -- Configuration.Fields.Update 是要调用的 OLE 对象的方法名。 -- null 当方法返回值是数组时,如果指定了 returnvalue,那么该值将被设置为 NULL。 --*/---------------------------------------------------------------------------------------------- EXEC @hr = sp_OASetProperty @object, '[To]', @To EXEC @hr = sp_OASetProperty @object, 'Bcc', @Bcc EXEC @hr = sp_OASetProperty @object, 'From', @From EXEC @hr = sp_OASetProperty @object, 'Subject', @Subject EXEC @hr = sp_OASetProperty @object, 'TextBody', @Body EXEC @hr = sp_OAMethod @object, 'Send', NULL --判断出错 IF @hr <> 0 BEGIN EXEC sp_OAGetErrorInfo @object RETURN @object END PRINT 'success' EXEC @hr = sp_OADestroy @object GO |