直播中
6.7.2. 通過SQL Mial發(fā)送郵件
SQL Mail會在兩種情況之下發(fā)送郵件。一種是當(dāng)系統(tǒng)發(fā)生警報時間時,會向預(yù)先為警報定義的操作員發(fā)送警報信息郵件(我們將在下一節(jié)中對此問題做詳細(xì)的討論)。另一種是通過擴(kuò)展存貯過程xp_sendmail來發(fā)送郵件。如果我們想要在SQL Server應(yīng)用中完成發(fā)送郵件功能的話,就需要使用此存貯過程。它的語法結(jié)構(gòu)如下:
xp_sendmail {[@recipients =] 'recipients [;...n]'}
[,][@message =] 'message']
[,][@query =] 'query']
[,][@attachments =] attachments]
[,][@copy_recipients =] 'copy_recipients [;...n]'
[,][@blind_copy_recipients =] 'blind_copy_recipients [;...n]'
[,][@subject =] 'subject']
[,[@type =] 'type']
[,][@attach_results =] 'attach_value']
[,][@no_output =] 'output_value']
[,][@no_header =] 'header_value']
[,][@width =] width]
[,][@separator =] 'separator']
[,][@echo_error =] 'echo_value']
[,][@set_user =] 'user']
[,][@dbuse =] 'database']
其中各參數(shù)的含義分別如下:
■ recipients:為郵件指定的接收人,可以同時將郵件發(fā)給多個用戶。各用戶的郵件地址用分號分割。此參數(shù)必須指定,而其他參數(shù)都為可選參數(shù)。
■ message:郵件中的信息,其最長不得超過7990字節(jié)。
■ query:一段SQL語句,其結(jié)果集將附在郵件之中。它的長度不得超過8000字節(jié)。
■ attachments:用來指定一個文件作為被發(fā)送郵件的附件。
■ copy_recipients:用來指定此郵件抄送到哪些用戶。即我們在郵件程序中常見的CC to:功能。
■ blind_copy_recipients:功能同上個參數(shù)。不過不同的是,郵件之中將不會包含這些收件人的地址信息。即我們在郵件程序中常見的密送BCC to:功能。
■ subject:郵件的標(biāo)題。如果不指明,默認(rèn)為"SQL Server Message"。
■ type:指定郵件的MAPI類型。默認(rèn)為空值。
■ attach_results:指明是否將SQL語句的執(zhí)行結(jié)果作為一個附件進(jìn)行發(fā)送。其取值為TRUE或FALSE。默認(rèn)值為FALSE。
■ no_output:指明此發(fā)送將不返回信息到SQL 客戶端。其取值為TRUE或FALSE。默認(rèn)值為FALSE。
■ no_header:指明不將SQL語句執(zhí)行結(jié)果中的字段名包含在郵件之中。其取值為TRUE或FALSE。默認(rèn)值為FALSE。
■ width:指定SQL語句執(zhí)行結(jié)果的行寬。省缺寬度為80個字符這樣可能會造成一些結(jié)果行被從中間截斷的現(xiàn)象。將行寬設(shè)大一些可以有效地防止此現(xiàn)象。
■ separator:指定SQL語句的執(zhí)行結(jié)果進(jìn)行字段分割的字符。這樣會方便一些電子表格應(yīng)用程序讀取結(jié)果集。
■ echo_error:指明是否包含系統(tǒng)錯誤信息。其取值為TRUE或FALSE。默認(rèn)值為TRUE。
■ set_user:指明執(zhí)行SQL語句的用戶,默認(rèn)為guest。此參數(shù)所指定的用戶應(yīng)該在master數(shù)據(jù)庫中存在。
■ dbuse:指明SQL語句在哪個數(shù)據(jù)庫上執(zhí)行,默認(rèn)為set_user指定的用戶的省缺數(shù)據(jù)庫。
下面的例子將把1999年12月1日的所有刊載的文章的題目發(fā)送給郵件地址為zw@cbb.com的用戶。
exec master.dbo.xp_sendmail
@recipients ='zw@cbb.com',
@message ='1999年12月1日刊載文章題目' ,
@query = 'select timu
from test.dbo.gaojian
where datepart(yy,riqi)=datepart(yy,convert(datetime,''1999-12-01')) and datepart(dy,riqi)=datepart(dy,convert(datetime,''1999-12-01''))
order by banmian' ,
@subject ='test',
@attach_results = 'true',
@width =60,
@separator = ',' ,
@set_user ='dbo',
@dbuse = 'test'
zw用戶收到的郵件附件文件的內(nèi)容如下:
Timu ,
----------------------------------------------------------------------------------------
測試信息1 ,
測試信息2 ,
測試信息3 ,