当前位置: 主页 > 服务器技术 > Mail服务器 > sql server 发送邮件原理及应用

sql server 发送邮件原理及应用

时间:2010-1-11来源:互联网 点击:

  ----此存储过程从指定的邮件收件箱中读取指定消息ID的邮件的各项信息。

  ----xp_deletemail[@msg_id=]msg_id

  ----从邮件收件箱中删除一封指定消息ID的邮件。

  ----注释:

  ----1.存储过程的多个参数间用逗号间隔开,[]内的为可选参数,每个参数均以@符号加字符串开头,用以区别不同的参数项。等号后可以是常量,也可以是预先定义好的变量。

  ----2.如果需要将某个结果值赋予参数中预先定义好的变量,就必须在该项参数的最后加OUTPUT。

  ----3.常用参数解释:

  ----?@recipient=recipient;指定收件人的电子邮件地址。如果有多个收件人,可以用分号分隔开。

  ----?@subject=subject;邮件的标题。发送邮件时的默认值为

  "SQLServerMessage"。

  ----?@message=message;邮件的具体内容。

  ----?@attachments=attachments;邮件挂接的附加文件名。

  ----?@type=type;基于MAPI定义的消息类型,详细信息参见"

  MicrosoftWindowsNTResourceKit"或"MicrosoftMailTechnicalReference"。

  ----?@query=query;一条SQL可执行语句,其执行结果以正文或附件的方式随邮件发送。

  ----?@msg_id=msg_id;对于信箱中的每一封邮件均被分配了

  ----?@attachments=attachments;邮件挂接的附加文件名。

  ----?@type=type;基于MAPI定义的消息类型,详细信息参见"

  MicrosoftWindowsNTResourceKit"或"MicrosoftMailTechnicalReference"。

  ----?@query=query;一条SQL可执行语句,其执行结果以正文或附件的方式随邮件发送。
 ----?@msg_id=msg_id;对于信箱中的每一封邮件均被分配了一个特殊的消息ID,用以相互区分。

  ----?@originator=@sender;读取特定邮件的发送者的邮件地址。

  --基于SQLMail的电子报刊自动处理系统

  ----这里利用SQLMail简单的实现了一个电子报刊自动处理系统。每当新的一期电子报刊编辑完成,只需简单追加到发行数据库publication中,SQLServer会自动定期执行my_publish存储过程。在my_publish存储过程中,它检查发行数据库,当发现有新的记录(即新的一期电子报刊)时,就通过逐个从订阅数据库sub_info中取出订阅人的邮件地址,完成给每个订阅者发送电子报刊(以邮件形式)的任务。

  ----电子报刊的订阅与取消也是通过邮件来实现。SQLServer同样定期执行my_subscibe存储过程。my_subscibe存储过程检查特定

  邮箱中的所有邮件,如果存在标题为"subscribe"的邮件,就取出它的发件人等信息,在订阅数据库中添加一条记录;同样,如果存在标题为"stopsubscribe"的邮件,就将它的相关记录从订阅数据库中删除。系统中用到的数据库和存储过程如下所

  示。sub_info(订阅者信息数据库) 字段名称类型允许空值含义

  emailvarchar(20)NOTNULL订阅者电子邮件地址

  sub_datedatetimeNOTNULL订阅时间

  othertextNULL订阅者的其他信息

  publication(电子报刊出版数据库)

  字段名称类型允许空值含义

  pub_classchar(10)NOTNULL电子报刊期号

  pub_datedatetimeNULL出版日期

  titletextNOTNULL本期电子报刊标题

  contenttextNOTNULL电子报刊正文

  endnotetextNULL附加于报刊的其他信息

  flagsmallintNULL1,标志为未出版的新报刊

  my_subscribe,用于处理订阅者信息的存储过程。

  CREATEPROCEDUREmy_subscribe

  AS

  declare@msg_idvarchar(64)

  declare@subjectvarchar(255)

  declare@messagevarchar(255)

  declare@originatorvarchar(255)

  declare@datevarchar(255)

  declare@statusint

  declare@mapifailureint

  select@mapifailure=0

  while(1=1)

  begin

  /*查找邮件并获取消息ID*/

  exec@status=master..

  xp_findnextmsg@msg_id=@msg_idOUTPUT

  if@status<>0

  begin

  select@mapifailure=1

  break

  end

  if@msg_idisnullbreak

  /*读取邮件的信息到变量中*/

  exec@status=master..xp_readmail

  @msg_id=@msg_id,

  @originator=@originatorOUTPUT,

  @subje

站长资讯网
.
分页: [1] [2]
TAG: sql server 发送邮件 原理 应用
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言