本文用个人经历来讲解 SQL Mail 的配置与使用。
用 SQL Mail 主要是要完成这样的功能:
>用户在网上注册后,系统将随机产生的密码发送到用户登记的 Email。
>用户在论坛的帖子有回复时将内容发送到用户的 Email。
因为上述过程都是在存储过程中完成的,所以避免了前台程序对参数的传输处理,也不需要再用第三方的组件完成,比较方便。
1、为了使用 SQL Mail,首先你的服务器上得有 SMTP 服务,我没有安装 win2000 server 自带的 SMTP,而是用 imail6.04的 SMTP,感觉比较稳定,功能也比较强。
2、安装一个邮件系统,我安装了 outLook 2000,我发现在配置邮件 profile 时,如果不安装 outLook 而是用别的第三方程序,win2k 中文 server 版在控制面板中就找不到“邮件”一项。
3、安装完 outlook 后再刷新控制面板,就会找到“邮件”一项,双击进行邮件的配置,为配置文件起一个名字(假设为 myProfile),以便以后 SQL Mail 使用,在该配置文件中设置各项属性。
4、启动 outlook(设置为用 MyProfile 作为默认的配置文件),测试进行收发邮件,确认 outlook 工作正常。
5、用当前的域帐户启动 SQL Server,在企业管理器的支持服务中,点击 SQL Mail 的属性,可以看到在配置文件选择中,出现了刚才定义的 myProfile 配置文件(你也可以定义多个 profile),选择这个配置文件进行测试,SQL 将返回成功开始和结束一个 MAPI 会话的信息,如果出现错误或是没有找到邮件配置文件,那一定是你启动 SQL server 用的帐号有问题。
6、现在你就可以在查询分析器中用 XP_sendmail 这个扩展存储过程发送 SQL Mail 了,格式如下:
以下为引用的内容:
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 是必需的。
参数说明:
参数 说明
@recipients 收件人,中间用逗号分开。
@message 要发送的信息。
@query 确定执行并依附邮件的有效查询,除触发器中的插入表及删除表外,此查询能引用任何对象。
@attachments 附件。
@copy_recipients 抄送。
@blind_copy_recipients 密送。
@subject 标题。
@attach_results 指定查询结果做为附件发送。
@no_header 不发送查询结果的列名。
@set_user 查询联接的用户名,默认为 Guset。
@dbuse 查询所用的数据库,默认为缺省数据库。
7、不过,如果是在 web 应用中使用 SQL mail,还有一些问题要解决:首先,就是应用程序中连接数据库的帐号,我在网站程序中的数据库连接是使用 UDL 文件,帐号为 DbGuest,这是一个普通帐户,所以还必须在 master 库的扩展存储过程找到 XP_sendmail,并在其属性中增加 DbGuest 这个用户,并选择 EXEC 权限。
好了,现在设置完毕,运行网站程序,测试用户注册,几乎没有什么延迟。
【注:本文由控件中国网转载】