Sql Server每日一练-利用SQL发E-MAIL

本文介绍如何使用 SQL Server 的内置扩展存储过程实现邮件发送、接收和管理等功能,包括启动和停止 SQLMail 服务、发送邮件、读取收件箱中的邮件、删除邮件等操作。

利用SQL发E-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']

### 连接SQL Server 2012与h-Mail服务器配置指南 为了实现SQL Server 2012与h-Mail服务器之间的通信,通常通过数据库邮件功能来完成。这涉及到设置Database Mail以便能够送电子邮件通知或其他形式的消息给h-Mail服务器。 #### 配置Database Mail向导 启动Database Mail配置向导可以通过SQL Server Management Studio (SSMS) 来操作,在工具菜单中找到并点击“Configure Database Mail”,按照提示进行设置[^1]。 #### 创建Mail Profile 创建一个新的邮件配置文件用于定义件人的邮箱地址和其他SMTP参数。这些信息应当匹配h-Mail服务器的要求,包括但不限于主机名、端口以及认证方式等细节。 #### 设置触器或存储过程调用sp_send_dbmail 利用T-SQL编写脚本或者设定事件触机制,当特定条件满足时自动执行`sp_send_dbmail`命令以传递消息到指定的目标收件箱内。下面是一个简单的例子展示如何构建这样的查询语句: ```sql EXEC msdb.dbo.sp_send_dbmail @profile_name = 'YourProfileName', @recipients = 'recipient@example.com', @body = 'This is the message body.', @subject = 'Test Email'; ``` 此代码片段展示了基本的语法结构;实际应用过程中可能还需要调整其他选项如附件路径(`@file_attachments`)或是HTML格式化支持(`@body_format='HTML'`)等功能特性。 #### 测试连接性 确保网络层面允许两台设备间的通讯,并验证防火墙规则不会阻止必要的流量传输。如果遇到问题可以尝试telnet测试目标IP地址及对应的服务端口号是否可达。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值