sqlserver数据库使用存储过程和dbmail实现定时发送邮件

上文已讲过(备注: 数据库邮件功能是 基于smtp实现的,首先在系统中 配置smtp功能。即 在 “添加/删除程序”面板中 “增加/删除windows组件”,选中并双击 打开”iis”或 “应用程序”,勾选 “smtp service”然后 一路 点“下一步”即可。一般不需要这一步,直接配置即可)

本文给出一个使用实例,结合存储过程和job来实现定时从数据库发送邮件:
1、创建存储过程,在新建的存储过程中调用sp_send_dbmail存储过程(注:代码中的\’只是添加代码时自动添加的转义字符,实质代码中只有单引号)

复制代码 代码如下:

create procedure [dbo].[sp_send_error_alert]

as

declare

@v_contentnvarchar(max),

@v_mail_tonvarchar(500),

@v_bodynvarchar(max),

@v_titilenvarchar(100)

,@v_br_idnvarchar(50)

,@v_installmentsnvarchar(10)

,@v_remarknvarchar(100)

begin

setnocounton;

set@v_titile=\’测试邮件内容标题;

set@v_content=\’\’;

declarecursor_repaymentcursorfor
select
br_id
,installments
,remark
fromdw_account_repaymentt
where
status!=1
andis_del=0
orderbyt.add_datetimedesc;

opencursor_repayment
fetchnextfromcursor_repaymentinto
@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>\’;

fetchnextfromcursor_repaymentinto
@v_br_id–标id
,@v_installments–期数
,@v_remark–错误描述
end;

closecursor_repayment;–关闭游标
deallocatecursor_repayment;–清空游标

iflen(@v_content)>0
begin
set@v_body=\'<html><h1>自动还款所有异常列表</h1><bodybgcolor=white><tableborder=1><tr><th>标id</th><th>期数</th><th>错误描述</th></tr>\’
set@v_body=@v_body+@v_content+\'</table></body></html>\’
execmsdb.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)\

创建job(sqlserver代理->作业),设置执行参数,定时执行此存储过程,即可实现定时发送邮件效果。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐