SQL邮件自动应答
时间:2007-12-23 来源:不详 作者:迈克DB
eg:
发送邮件,邮件内容为:selecttop10id,namefromsysobjects则服务器自动回复邮件,内容为上述查询语句的执行结果,以附件形式发送。
1:当然是先配置好SQL邮件服务了,这方面的资料比较多,此处不赘述。
2:把sp_processmail稍作修改(把发件人的邮件地址解析为真正的邮箱地址)
Alterproceduresp_processmail
@subjectvarchar(255)=NULL,
@filetypevarchar(3)=’txt’,
@separatorvarchar(3)=’tab’,
@set_uservarchar(132)=’guest’,
@dbusevarchar(132)=’master’
as
declare@statusint
declare@msg_idvarchar(64)
declare@originatorvarchar(255)
declare@originator_addressvarchar(255)
declare@avarchar(255)
declare@cc_listvarchar(255)
declare@msgsubjectvarchar(255)
declare@queryvarchar(8000)
declare@messagesint
declare@mapifailureint
declare@resultmsgvarchar(80)
declare@filenamevarchar(12) 内容来自dedecms
declare@current_msgvarchar(64)
select@messages=0
select@mapifailure=0
if@separator=’tab’select@separator=CHAR(9)
/*getfirstmessageid*/
exec@status=master.dbo.xp_findnextmsg
@msg_id=@msg_idoutput,
@unread_only=’true’
if@status<>0
select@mapifailure=1
while(@mapifailure=0)
begin
if@msg_idisnullbreak
if@msg_id=’’break
exec@status=master.dbo.xp_readmail
@msg_id=@msg_id,
@originator=@originatoroutput,
@cc_list=@cc_listoutput,
@subject=@msgsubjectoutput,
@message=@queryoutput,
@peek=’true’,
@originator_address=@originator_addressoutput,
@suppress_attach=’true’
if@status<>0
begin
select@mapifailure=1
break
end
/*getnewmessageidbeforeprocessing&deletingcurrent*/
select@current_msg=@msg_id
exec@status=master.dbo.xp_findnextmsg
@msg_id=@msg_idoutput,
@unread_only=’true’
if@status<>0
begin
select@mapifailure=1 内容来自dedecms
end
if((@subjectISNULL)OR(@subject=@msgsubject))
begin
/*generaterandomfilename*/
select@filename=’SQL’ convert(varchar,ROUND(RAND()*100000,0)) ’.’ @filetype
exec@status=master.dbo.xp_sendmail
--@recipients=@originator,
@recipients=@originator_address,
@copy_recipients=@cc_list,
@message=@query,
@query=@query,
@subject=’QueryResults’,
@separator=@separator,
@width=256,
@attachments=@filename,
@attach_results=’true’,
@no_output=’false’,
@echo_error=’true’,
@set_user=@set_user,
@dbuse=@dbuse
if@status<>0
begin
select@mapifailure=1
break
end
select@messages=@messages 1
execmaster.dbo.xp_deletemail@current_msg
end/*endofxp_sendmailblock*/
end/*endofxp_findnextmsgloop*/
/*finishedexaminingthecontentsofinbox;nowsendresults*/
if@mapifailure=1
begin
raiserror(15079,-1,-1,@messages)
return(1)
![](/images/arc_icon.gif)
上一篇:IBM DB2 基本性能调整 下一篇:SQLServer数据库文件恢复技术
文章评论
共有位Admini5网友发表了评论 查看完整内容