6.7.3. 通过SQL Mial发送邮件 SQL Mail会在两种情况之下发送邮件。一种是当系统发生警报时间时,会向预先为警报定义的操作员发送警报信息邮件(我们将在下一节中对此问题做详细的讨论)。另一种是通过扩展存贮过程xp_sendmail来发送邮件。如果我们想要在
SQL Server应用中完成发送邮件功能的话,就需要使用此存贮过程。它的语法结构如下:
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]
其中各参数的含义分别如下:
■ recipients:为邮件指定的接收人,可以同时将邮件发给多个用户。各用户的邮件地址用分号分割。此参数必须指定,而其他参数都为可选参数。
■ message:邮件中的信息,其最长不得超过7990字节。
■ query:一段
SQL语句,其结果集将附在邮件之中。它的长度不得超过8000字节。
■ attachments:用来指定一个文件作为被发送邮件的附件。
■ copy_recipients:用来指定此邮件抄送到哪些用户。即我们在邮件程序中常见的CC to:功能。
■ blind_copy_recipients:功能同上个参数。不过不同的是,邮件之中将不会包含这些收件人的地址信息。即我们在邮件程序中常见的密送BCC to:功能。
■ subject:邮件的标题。如果不指明,默认为"
SQL Server Message"。
■ type:指定邮件的MAPI类型。默认为空值。
■ attach_results:指明是否将
SQL语句的执行结果作为一个附件进行发送。其取值为TRUE或FALSE。默认值为FALSE。
■ no_output:指明此发送将不返回信息到
SQL 客户端。其取值为TRUE或FALSE。默认值为FALSE。
■ no_header:指明不将
SQL语句执行结果中的字段名包含在邮件之中。其取值为TRUE或FALSE。默认值为FALSE。
■ width:指定
SQL语句执行结果的行宽。省缺宽度为80个字符这样可能会造成一些结果行被从中间截断的现象。将行宽设大一些可以有效地防止此现象。
■ separator:指定
SQL语句的执行结果进行字段分割的字符。这样会方便一些电子表格应用程序读取结果集。
■ echo_error:指明是否包含系统错误信息。其取值为TRUE或FALSE。默认值为TRUE。
■ set_user:指明执行
SQL语句的用户,默认为guest。此参数所指定的用户应该在master数据库中存在。
■ dbuse:指明
SQL语句在哪个数据库上执行,默认为set_user指定的用户的省缺数据库。
下面的例子将把1999年12月1日的所有刊载的文章的题目发送给邮件地址为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用户收到的邮件附件文件的内容如下:
Timu ,
----------------------------------------------------------------------------------------
测试信息1 ,
测试信息2 ,
测试信息3 ,