国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

SQL郵件自動應(yīng)答(根據(jù)收到的郵件中的查詢語句回復(fù)語句執(zhí)行結(jié)果)

2024-07-21 02:08:08
字體:
供稿:網(wǎng)友

sqlmail可以收發(fā)郵件,可能好多人都有xp_sendmail發(fā)送過郵件,
這里介紹一種郵件服務(wù)器接收郵件后,根據(jù)郵件內(nèi)容(只能是查詢語句)
把郵件中的查詢語句執(zhí)行后的結(jié)果以附件形式自動返回給發(fā)送郵件者。

eg:
發(fā)送郵件,郵件內(nèi)容為: select top 10 id,name from sysobjects
則服務(wù)器自動回復(fù)郵件,內(nèi)容為上述查詢語句的執(zhí)行結(jié)果,以附件形式發(fā)送。


1:當(dāng)然是先配置好sql郵件服務(wù)了,這方面的資料比較多,此處不贅述。

2: 把sp_processmail稍作修改 (把發(fā)件人的郵件地址解析為真正的郵箱地址)

alter procedure sp_processmail
 @subject varchar(255)=null, 
 @filetype varchar(3)='txt', 
 @separator varchar(3)='tab', 
 @set_user varchar(132)='guest', 
 @dbuse varchar(132)='master' 
as 
 
declare @status int 
declare @msg_id varchar(64) 
declare @originator varchar(255) 
declare @originator_address varchar(255) 
declare @a varchar(255)

declare @cc_list varchar(255) 
declare @msgsubject varchar(255) 
declare @query varchar(8000) 
declare @messages int 
declare @mapifailure int 
declare @resultmsg varchar(80) 
declare @filename varchar(12) 
declare @current_msg varchar(64) 
 
select @messages=0 
select @mapifailure=0 
 
if @separator='tab' select @separator=char(9) 
 
/* get first message id */ 
exec @status = master.dbo.xp_findnextmsg 
  @[email protected]_id output, 
  @unread_only='true' 
 
if @status <> 0 
 select @mapifailure=1 
 
while (@mapifailure=0) 
  begin 
 
    if @msg_id is null break 
    if @msg_id = '' break 
 
    exec @status = master.dbo.xp_readmail 
  @[email protected]_id, 
  @[email protected] output, 
  @[email protected]_list output, 
  @[email protected] output, 
  @[email protected] output, 
  @peek='true', 
  @originator_address= @originator_address output,
  @suppress_attach='true' 
 
    if @status <> 0 
 begin 
  select @mapifailure=1 
  break 
 end 
 
    /* get new message id before processing & deleting current */ 
 select @[email protected]_id 
 exec @status = master.dbo.xp_findnextmsg 
  @[email protected]_id output, 
  @unread_only='true' 
 
     if @status <> 0 
 begin 
  select @mapifailure=1 
 end 
 
 
    if ((@subject is null) or (@[email protected])) 
    begin 
 /* generate random filename */ 
 select @filename='sql' + convert(varchar,round(rand()*100000,0)) + '.' + @filetype 
 
 exec @status = master.dbo.xp_sendmail 
--   @[email protected], 
   @[email protected]_address, 
   @[email protected]_list, 
   @[email protected], 
   @[email protected], 
   @subject='query results', 
   @[email protected], 
   @width=256, 
   @[email protected], 
   @attach_results='true', 
   @no_output='false', 
   @echo_error='true', 
   @[email protected]_user, 
   @[email protected] 
 
 if @status <> 0 
  begin 
   select @mapifailure=1 
   break 
  end 
 
 select @[email protected]+1 
 
 exec master.dbo.xp_deletemail @current_msg 
 
    end /* end of xp_sendmail block */ 
  end  /* end of xp_findnextmsg loop */ 
 
  /* finished examining the contents of inbox;  now send results */ 
  if @mapifailure=1 
       begin 
  raiserror(15079,-1,-1,@messages) 
  return(1) 
 end 
  else 
 return(0) 
-- sp_processmail 

3:在master數(shù)據(jù)庫下建一個存儲過程
use master
create proc answermail
as
sp_processmail  @subject = 'sql',@filetype = 'csv',@separator =',',@set_user = 'dbo' ,@dbuse =  '數(shù)據(jù)庫名'


4:
用job調(diào)度此存儲過程。

5:
現(xiàn)在可以測試了。
發(fā)一封郵件給服務(wù)器上配置的郵箱地址。
主題為  sql
內(nèi)容為 一句簡單的查詢語句 eg:  select getdate()
發(fā)送

6: 等到j(luò)ob調(diào)度時間到后即可收到回復(fù)。

 

(以上在 windows2000 + sql2000+microsoft outlook上測試通過)

 
,歡迎訪問網(wǎng)頁設(shè)計愛好者web開發(fā)。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐都县| 芮城县| 南靖县| 股票| 高尔夫| 大厂| 麻栗坡县| 乐业县| 虞城县| 乌拉特中旗| 文昌市| 兴义市| 嵩明县| 余庆县| 河北省| 区。| 洞口县| 会东县| 朝阳市| 吴堡县| 左贡县| 万年县| 绵竹市| 彰化县| 廉江市| 桃园县| 湘西| 苗栗市| 安平县| 蒙城县| 绥棱县| 陈巴尔虎旗| 高邮市| 铁岭市| 汕头市| 灌南县| 安龙县| 化州市| 淅川县| 牟定县| 中牟县|