上一节已经讲解了如何在数据库中配置数据库邮件发送(备注: 数据库邮件功能是 基于SMTP实现的,首先在系统中 配置SMTP功能。即 在 “添加/删除程序”面板中 “增加/删除WINDOWS组件”,选中并双击 打开"IIS"或 “应用程序”,勾选 "SMTP SERVICE"然后 一路 点“下一步”即可。一般不需要这一步,直接配置即可)
完成配置后,我们可以结合存储过程和Job来实现定时从数据库发送邮件:
1、创建存储过程,在新建的存储过程中调用sp_send_dbmail存储过程(注:代码中的\'只是添加代码时自动添加的转义字符,实质代码中只有单引号)
二、创建Job(SqlServer代理->作业),设置执行参数,定时执行此存储过程,即可实现定时发送邮件效果。
完成配置后,我们可以结合存储过程和Job来实现定时从数据库发送邮件:
1、创建存储过程,在新建的存储过程中调用sp_send_dbmail存储过程(注:代码中的\'只是添加代码时自动添加的转义字符,实质代码中只有单引号)
点击(此处)折叠或打开
- Create PROCEDURE [dbo].[sp_send_error_alert]
- AS
- declare
- @v_content nvarchar(max),
- @v_mail_to nvarchar(500),
- @v_body nvarchar(max),
- @v_titile nvarchar(100)
- ,@v_br_id nvarchar(50)
- ,@v_installments nvarchar(10)
- ,@v_remark nvarchar(100)
- BEGIN
- SET NOCOUNT ON;
- set @v_titile=\'测试邮件内容标题;
- set @v_content=\'\';
-
- DECLARE cursor_repayment CURSOR FOR
- SELECT
- br_id
- ,installments
- ,remark
- from dw_account_repayment t
- where
- status!=1
- and is_del=0
- order by t.add_datetime desc;
-
- OPEN cursor_repayment
- FETCH NEXT FROM cursor_repayment INTO
- @v_br_id --标ID
- ,@v_installments --期数
- ,@v_remark --错误描述
- WHILE @@FETCH_STATUS=0
- BEGIN
-
- set @v_content=@v_content+\'<tr><td>\'+@v_br_id+\'</td>\'+\'<td>\'+@v_installments+\'</td>\'+\'<td>\'+@v_remark+\'</td></tr>\';
-
- fetch next from cursor_repayment into
- @v_br_id --标ID
- ,@v_installments --期数
- ,@v_remark --错误描述
- end;
-
- CLOSE cursor_repayment; --关闭游标
- DEALLOCATE cursor_repayment; --清空游标
-
- if LEN(@v_content)>0
- begin
- SET @v_body =\'<html><H1>自动还款所有异常列表</H1><body bgcolor=white><table border = 1><tr><th>标ID</th><th>期数</th><th>错误描述</th></tr>\'
- SET @v_body = @v_body + @v_content +\'</table></body></html>\'
- EXEC msdb.dbo.sp_send_dbmail
- @recipients =N\'接收用户地址1@qq.com;接收用户地址2@qq.com\',@body = @v_body,@body_format =\'HTML\'
- ,@subject =@v_titile,@profile_name =\'上一节点的配置文件名(db_profiler)\
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28699126/viewspace-1074615/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28699126/viewspace-1074615/