日期:2014-05-18 浏览次数:20414 次
正确配置和使用SQL mail 使用SQL Mail收发和自动处理邮件中的扩展存储过程简介 SQL SERVER提供了通过EXCHANGE或OUTLOOK收发邮件的扩展存储过程,下面将这几个过程简单的介绍一下。 一、启动SQL Mail xp_startmail @user,@password @user和@password都是可选的 也可打开Enterprise Manager中的Support Services,在SQL Mail上单击右键打开右键菜单,然后按Start来启动 二、停止SQL Mail xp_stopmail 也可用上述方法中的菜单里的Stop来停止 三、发送邮件 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 查询所用的数据库,默认为缺省数据库 四、阅读邮件收件箱中的邮件 xp_readmail [[@msg_id =] 'message_number> [, [@type =] 'type' [OUTPUT]] [,[@peek =] 'peek> [,[@suppress_attach =] 'suppress_attach> [,[@originator =] 'sender' OUTPUT] [,[@subject =] 'subject' OUTPUT] [,[@message =] 'message' OUTPUT] [,[@recipients =] 'recipients [;...n]' OUTPUT] [,[@cc_list =] 'copy_recipients [;...n]' OUTPUT] [,[@bcc_list =] 'blind_copy_recipients [;...n]' OUTPUT] [,[@date_received =] 'date' OUTPUT] [,[@unread =] 'unread_value' OUTPUT] [,[@attachments =] 'attachments [;...n]' OUTPUT]) [,[@skip_bytes =] bytes_to_skip OUTPUT] [,[@msg_length =] length_in_bytes OUTPUT] [,[@originator_address =] 'sender_address' OUTPUT]] 参数说明: 参数 说明 @originator 发件人 @subject 主题 @message 信息 @recipients 收件人 @skip_tytes 读取邮件信息时跳过的字节数,用于顺序获取邮件信息段。 @msg_length 确定所有信息的长度,通常与@skip_bytes一起处理长信息 五、顺序处理下一个邮件 xp_findnextmsg [[@msg_id =] 'message_number' [OUTPUT]] [,[@type =] type] [,[@unread_only =] 'unread_value> ) 六、删除邮件 xp_deletemail {'message_number'} 如果不指定邮件编号则删除收件箱中的所有邮件 七、自动处理邮件 sp_processmail [[@subject =] 'subject> [,[@filetype =] 'filetype> [,[@separator =] 'separator> [,[@set_user =] 'user> [,[@dbuse =] 'dbname> >用户在网上注册后,系统将随机产生的密码发送到用户登记的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 =] 'separato