ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:18.37KB ,
资源ID:10494467      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10494467.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(文摘SQLMail的原理及实际应用.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

文摘SQLMail的原理及实际应用.docx

1、文摘SQLMail的原理及实际应用(文摘)SQLMail的原理及实际应用 关键词:Sql Server -概述 -这里所指的SQLMail,是微软公司的关系数据库管理系统 SQLServer所提供的邮件功能。在SQLServer中包含一些扩展存储 过程,使得SQLServer可以通过基于WindowsNT内部的消息应用编 程界面(MAPI)的客户机邮件程序接收和发送邮件消息。SQLMa il可发送的消息包括文本串,附加文件或SQL语句的执行结果 集。应用SQLMail的扩展存储过程,邮件消息可以从一个触发 器或一个存储过程中发送,并且通过SQLServer提供的任务和警 告等功能,可以根据需要

2、在不同的时间和情况下发送。 -SQLMail工作流程 -SQLMail工作流程主要分为邮件收、发两个过程。 -在SQLServer内可以通过一定方法,调用扩展存储过程xp_s endmail,将收信人电子邮件地址,标题,信的内容等以参数的 形式传送给xp_sendmail,由它通过客户端MAPI接口将发送邮件任 务交给如MicrosoftExchangeClient或Outlook97等邮件客户端程序, 最终通过邮件服务将邮件发送出去。 -收邮件的过程与此相似。在SQLServer端定期或手工调用x p_readmail扩展存储过程,通过客户端MAPI接口将存放在邮件服 务器或客户端的邮件及其

3、他信息读入SQL变量中,用来满足特 定的处理需要。 配置SQLMail -配置SQLMail的首要条件是要有一个电子邮件帐户,不管 是局域网内的MSExchangeServer或MSMail3.x的邮件帐户,还是Int ernet上的SMTP,POP3等邮件帐户均可。具体配置可分为以下几步 : -1为SQLServer创建一个NT域用户帐号,要求具有本地管 理员组的权限。仔细设置帐号口令,保证口令足够复杂,且 设成口令永不过期和用户不得更改口令。 -2双击控制面板的服务图标,找到MSSQLServer的启动设 置,将UseSystemAccount改为UseThisAccount,将刚才建立的

4、NT帐号 和口令输入。重新启动SQLServer。 -3在安装SQLServer的服务器上以与启动SQLServer相同的 NT帐号登录,然后安装支持MAPI接口的邮件客户端程序,如MS ExchangeClient和Outlook97。 -4打开控制面板的电子邮件选项,建立一个配置文件 (Profile)。用这个配置文件启动邮件客户端程序,反复检验 直至能正常收发邮件。 -5从SqlEnterpriserManager中,点中相应的服务器图标,从 Server菜单中选SQLMail/Configure,将在第4步中建立的配置文件 名输入。 -6从SqlEnterpriserManager中,

5、点中相应的服务器图标,从 Server菜单中选SQLMail/Start,如果SqlMail的图标变为绿色,则SQ LMail成功启动。 -常用的SQLMail扩展存储过程 xp_sendmailrecipient=recipient ;recipient2;.;recipientn ,message=message ,query=query ,attachments=attachments ,copy_recipients=recipient ;recipient2;.;recipientn ,blind_copy_recipients=recipient ;recipient2;.;rec

6、ipientn ,subject=subject ,type=type ,attach_results= true | false ,no_output= true | false ,no_header= true | false ,width=width ,separator=separator ,echo_error= true | false ,set_user=user ,dbuse=dbname -此存储过程通过客户端MAPI接口发送邮件,内容可以是 文本串,附加文件或SQL语句的执行结果集。 xp_findnextmsgmsg_id=msg_idOUTPUT ,type=type

7、,unread_only= true | false ) -此存储过程在邮箱中查找特定的邮件,并返回一封邮件 的消息ID。 xp_readmail(msg_id=msg_id,type=typeOUTPUT ,peek= true | false ,suppress_attach= true | false ,originator=senderOUTPUT ,subject=subject_lineOUTPUT ,message=body_of_messageOUTPUT ,recipients=recipient_listOUTPUT ,cc_list=cc_listOUTPUT ,bcc_

8、list=bcc_listOUTPUT ,date_received=dateOUTPUT ,unread= true | false ,attachments=temp_file_pathsOUTPUT) ,skip_bytes=bytes_toskipOUTPUT ,msg_length=length_in_bytesOUTPUT) -此存储过程从指定的邮件收件箱中读取指定消息ID的邮 件的各项信息。 -xp_deletemailmsg_id=msg_id -从邮件收件箱中删除一封指定消息ID的邮件。 -注释: -1.存储过程的多个参数间用逗号间隔开,内的为可选 参数,每个参数均以符号加字

9、符串开头,用以区别不同的参 数项。等号后可以是常量,也可以是预先定义好的变量。 -2.如果需要将某个结果值赋予参数中预先定义好的变 量,就必须在该项参数的最后加OUTPUT。 -3.常用参数解释: -?recipient=recipient;指定收件人的电子邮件地址。如 果有多个收件人,可以用分号分隔开。 -?subject=subject;邮件的标题。发送邮件时的默认值为 SQLServerMessage 。 -?message=message;邮件的具体内容。 -?attachments=attachments;邮件挂接的附加文件名。 -?type=type;基于MAPI定义的消息类型,详

10、细信息参见 MicrosoftWindowsNTResourceKit 或 MicrosoftMailTechnicalReference 。 -?query=query;一条SQL可执行语句,其执行结果以正文 或附件的方式随邮件发送。 -?msg_id=msg_id;对于信箱中的每一封邮件均被分配了 -?attachments=attachments;邮件挂接的附加文件名。 -?type=type;基于MAPI定义的消息类型,详细信息参见 MicrosoftWindowsNTResourceKit 或 MicrosoftMailTechnicalReference 。 -?query=que

11、ry;一条SQL可执行语句,其执行结果以正文 或附件的方式随邮件发送。 -?msg_id=msg_id;对于信箱中的每一封邮件均被分配了 一个特殊的消息ID,用以相互区分。 -?originator=sender;读取特定邮件的发送者的邮件地 址。 -基于SQLMail的电子报刊自动处理系统 -这里利用SQLMail简单的实现了一个电子报刊自动处理系 统。每当新的一期电子报刊编辑完成,只需简单追加到发行 数据库publication中,SQLServer会自动定期执行my_publish存储过 程。在my_publish存储过程中,它检查发行数据库,当发现有新 的记录(即新的一期电子报刊)时,

12、就通过逐个从订阅数据库 sub_info中取出订阅人的邮件地址,完成给每个订阅者发送电 子报刊(以邮件形式)的任务。 -电子报刊的订阅与取消也是通过邮件来实现。SQLServer 同样定期执行my_subscibe存储过程。my_subscibe存储过程检查特定 邮箱中的所有邮件,如果存在标题为 subscribe 的邮件,就取 出它的发件人等信息,在订阅数据库中添加一条记录;同样, 如果存在标题为 stopsubscribe 的邮件,就将它的相关记录从 订阅数据库中删除。系统中用到的数据库和存储过程如下所 示。sub_info(订阅者信息数据库) 字段名称类型允许空值含义 emailvarc

13、har(20)NOTNULL订阅者电子邮件地址 sub_datedatetimeNOTNULL订阅时间 othertextNULL订阅者的其他信息 publication(电子报刊出版数据库) 字段名称类型允许空值含义 pub_classchar(10)NOTNULL电子报刊期号 pub_datedatetimeNULL出版日期 titletextNOTNULL本期电子报刊标题 contenttextNOTNULL电子报刊正文 endnotetextNULL附加于报刊的其他信息 flagsmallintNULL1,标志为未出版的新报刊 my_subscribe,用于处理订阅者信息的存储过程。

14、CREATEPROCEDUREmy_subscribe AS declaremsg_idvarchar(64) declaresubjectvarchar(255) declaremessagevarchar(255) declareoriginatorvarchar(255) declaredatevarchar(255) declarestatusint declaremapifailureint selectmapifailure=0 while(1=1) begin /*查找邮件并获取消息ID*/ execstatus=master. xp_findnextmsgmsg_id=msg_

15、idOUTPUT ifstatus 0 begin selectmapifailure=1 break end ifmsg_idisnullbreak /*读取邮件的信息到变量中*/ execstatus=master.xp_readmail msg_id=msg_id, originator=originatorOUTPUT, subject=subjectOUTPUT, message=messageOUTPUT, date_received=dateOUTPUT ifstatus 0 begin selectmapifailure=1 break end /*根据邮件标题,在订阅数据库中

16、添加或删除记录*/ execxp_deletemailmsg_id=msg_id ifsubject= subscribe insertintosqlmailsample. sub_infovalues(originator,date,message) else ifsubject= stopsubscribe deletefromsqlmailsample.sub_infowhereemail=originator end/*循环结束*/ ifmapifailure=1 /*错误处理代码*/ else return(0) GO my_publish,用于分发电子报刊的存储过程。 CREATE

17、PROCEDUREmy_publish AS declarerecipientvarchar(255) declaresubjectvarchar(255) declarecontentvarchar(255) declareendnotevarchar(255) declarestatusint selectsubject=pub_classfrom sqlmailsample.publicationwhereflag=1 /*如果有新的电子报刊,则开始分发*/ if(subjectisnotnull) begin /*将数据库记录取出,经过适当处理后,存放到变量中*/ selectsubj

18、ect=convert(varchar (255),title)+ ( +pub_class+ ) , content=convert(varchar(255),content) +convert(varchar(255),endnote) fromsqlmailsample.publication whereflag=1 updatesqlmailsample.publication setflag=0whereflag=1 declarecurcursorforselect emailfromsqlmailsample.sub_info opencur fetchcur while(fet

19、ch_status=0) begin /*取收件人的电子邮件地址*/ fetchnextfromcurintorecipient /*发送电子邮件*/ iffetch_status=0 begin execstatus=master.xp_sendmail recipients=recipient, message=content, subject=subject ifstatus 0 /*错误处理代码*/ end end/*向所有订阅人发送电子报刊的循环结束*/ closecur deallocatecur end GO -总之,SQLMail在数据库和电子邮件之间架起了一座沟通 end/*向所有订阅人发送电子报刊的循环结束*/ closecur deallocatecur end GO -总之,SQLMail在数据库和电子邮件之间架起了一座沟通 的桥梁,为某些特定用途的应用提供了简单高效的解决方案 ,值得一试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1