数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

正确配置和使用SQL mail


发布日期:2019年06月07日
 
正确配置和使用SQL mail

我就把我配置SQL mail的过程描述一遍

我用SQL mail主要是要完成这样的功能

>用户在网上注册后系统将随机产生的密码发送到用户登记的Email

>用户在论坛的帖子有回复时将内容发送到用户的Email

因为上述过程都是在存储过程中完成的所以避免了前台程序对参数的

传输处理也不需要再用第三方的组件完成感觉比较方便

为了使用SQL mail首先你的服务器上得有SMTP服务我没有安装win server自带的SMTP而是用imail的SMTP感觉比较稳定功能也比较强

安装一个邮件系统我安装了outLook 我发现在配置邮件profile时如果

不安装outLook而是用别的第三方程序wink中文server版在控制面板中就找不到邮件一项

安装完outlook后再刷新控制面板就会找到邮件一项双击进行邮件的配置为配置文件起一个名字(假设为myProfile)以便以后SQL mail使用在该配置文件中设置各项属性

启动outlook(设置为用myProfile作为默认的配置文件)测试进行收发邮件确认outlook工作正常

用当前的域帐户启动SQL server在企业管理器的支持服务中点击SQL mail的属性可以看到在配置文件选择中出现了刚才定义的myProfile配置文件(你也可以定义多个profile)选择这个配置文件进行测试SQL将返回成功开始和结束一个MAPI会话的信息如果出现错误或是没有找到邮件配置文件那一定是你启动SQL server用的帐号有问题

现在你就可以在查询分析器中用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 查询所用的数据库默认为缺省数据库

不过如果是在web应用中使用SQL mail还有一些问题要解决:首先就是应用程序中连接数据库的帐号我在网站程序中的数据库连接是使用UDL文件帐号为DbGuest这是一个普通帐户所以还必须在master库的扩展存储过程找到XP_sendmail并在其属性中增加DbGuest这个用户并选择EXEC权限

好了现在设置完毕运行网站程序测试用户注册几乎没有什么延迟我测试用的邮箱中就收到了这封SQL mail发出的Email:

谢谢你的注册你的用户名是 [心歌]密码是 建议你首次登录后修改密码

大功告成!看起来很简单的过程却折腾了我一个星期!希望你能比我顺利

不过现在虽然能用SQLmail发送附件附加数据库查询结果但是我还没有发现有什么办法用SQLmail发送html格式的邮件如果你知道请一定告诉我哟!               

上一篇:获取 SQL SERVER用户表信息游标

下一篇:探讨SQL Server中Case的不同用法