使用SQL2000发送邮件!

使用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

你可能感兴趣的:(使用SQL2000发送邮件!)