如何使用SQL Mail收发和自动处理邮件?
时间:2010-05-16 15:10:00
我发现有的网站利用了SQL SERVER提供的通过EXCHANGE或OUTLOOK收发邮件的扩展存储过程来完成收发和自动处理邮件(这句话太长了),是怎样实现的?
SQL SERVER为我们提供的扩展存储过程,可以完成收发和自动处理邮件功能,下面来大致了解一下:
一、运行和关闭
1、启动SQL Mail:
xp_startmail @user,@password
其中@user和@password可选,还可通过打开Enterprise Manager中的Support Services,在SQL Mail上单击右键,然后按菜单中的Start来启动。
2、关闭SQL Mail:
xp_stopmail
也可以通过打开Enterprise Manager中的Support Services,在SQL Mail上单击右键,按菜单里的Stop来终止。
二、收发邮件
1、发送邮件
xp_sendmail {[@recipients =] 'recipients [;...n]'}
' @recipients,收件人,中间用逗号分开,必需
[,[@message =] 'message']
' @message,要发送的信息
[,[@query =] 'query']
' @query,确定执行并依附邮件的有效查询,可以引用任何对象,触发器中的插入表及删除表除外
[,[@attachments =] attachments]
' @attachments,附件
[,[@copy_recipients =] 'copy_recipients [;...n]'
' @copy_recipients,抄送
[,[@blind_copy_recipients =] 'blind_copy_recipients [;...n]'
' @blind_copy_recipients,密送
[,[@subject =] 'subject']
' @subject,标题
[,[@type =] 'type']
[,[@attach_results =] 'attach_value']
' @attach_results,指定查询结果做为附件发送
[,[@no_output =] 'output_value']
[,[@no_header =] 'header_value']
' @no_header,不发送查询结果的列名
[,[@width =] width]
[,[@separator =] 'separator']
[,[@echo_error =] 'echo_value']
[,[@set_user =] 'user']
' @set_user,查询联接的用户名,默认为Guset
[,[@dbuse =] 'database']
' @dbuse,查询所用的数据库,默认为缺省数据库
2、阅读邮件收件箱中的邮件
xp_readmail [[@msg_id =] 'message_number'] [, [@type =] 'type' [OUTPUT]]
[,[@peek =] 'peek']
[,[@suppress_attach =] 'suppress_attach']
[,[@originator =] 'sender' OUTPUT]
' @originator,发件人
[,[@subject =] 'subject' OUTPUT]
' @subject,主题
[,[@message =] 'message' OUTPUT]
' @message,信息
[,[@recipients =] 'recipients [;...n]' OUTPUT]
' @recipients,收件人
[,[@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]
' @skip_tytes,读取邮件信息时跳过的字节数,用于顺序获取邮件信息段
[,[@msg_length =] length_in_bytes OUTPUT]
' @msg_length,确定所有信息的长度,通常与@skip_bytes一起处理长信息
[,[@originator_address =] 'sender_address' OUTPUT]]
3、按顺序处理下一个邮件
xp_findnextmsg [[@msg_id =] 'message_number' [OUTPUT]]
[,[@type =] type]
[,[@unread_only =] 'unread_value'])
4、删除邮件
xp_deletemail {'message_number'}
如果不指定邮件编号则删除收件箱中的所有邮件
三、自动处理邮件
sp_processmail [[@subject =] 'subject']
[,[@filetype =] 'filetype']
[,[@separator =] 'separator']
[,[@set_user =] 'user']
[,[@dbuse =] 'dbname']