ITPub博客

首页 > 数据库 > 数据库开发技术 > 利用SqlServer系统存储过程sp_send_dbmail发送邮件实例(二)

利用SqlServer系统存储过程sp_send_dbmail发送邮件实例(二)

原创 数据库开发技术 作者:CodeAgriculture 时间:2014-01-23 16:38:05 0 删除 编辑
上一节已经讲解了如何在数据库中配置数据库邮件发送(备注: 数据库邮件功能是 基于SMTP实现的,首先在系统中 配置SMTP功能。即 在 “添加/删除程序”面板中 “增加/删除WINDOWS组件”,选中并双击 打开"IIS"或 “应用程序”,勾选 "SMTP SERVICE"然后 一路 点“下一步”即可。一般不需要这一步,直接配置即可)
完成配置后,我们可以结合存储过程和Job来实现定时从数据库发送邮件:
1、创建存储过程,在新建的存储过程中调用sp_send_dbmail存储过程(注:代码中的\'只是添加代码时自动添加的转义字符,实质代码中只有单引号)
 

点击(此处)折叠或打开

  1. Create PROCEDURE [dbo].[sp_send_error_alert]
  2. AS
  3. declare
  4.  @v_content nvarchar(max),
  5.  @v_mail_to nvarchar(500),
  6.  @v_body nvarchar(max),
  7.  @v_titile nvarchar(100)
  8.  ,@v_br_id nvarchar(50)
  9.  ,@v_installments nvarchar(10)
  10.  ,@v_remark nvarchar(100)
  11. BEGIN
  12.  SET NOCOUNT ON;
  13.  set @v_titile=\'测试邮件内容标题;
  14.  set @v_content=\'\';
  15.  
  16.  DECLARE cursor_repayment CURSOR FOR
  17.  SELECT
  18.  br_id
  19.  ,installments
  20.  ,remark
  21.  from dw_account_repayment t
  22.  where
  23.  status!=1
  24.  and is_del=0
  25.  order by t.add_datetime desc;
  26.  
  27.  OPEN cursor_repayment
  28.   FETCH NEXT FROM cursor_repayment INTO
  29.   @v_br_id --标ID
  30.   ,@v_installments --期数
  31.   ,@v_remark --错误描述
  32.   WHILE @@FETCH_STATUS=0
  33.   BEGIN
  34.   
  35.   set @v_content=@v_content+\'<tr><td>\'+@v_br_id+\'</td>\'+\'<td>\'+@v_installments+\'</td>\'+\'<td>\'+@v_remark+\'</td></tr>\';
  36.   
  37.   fetch next from cursor_repayment into
  38.   @v_br_id --标ID
  39.   ,@v_installments --期数
  40.   ,@v_remark --错误描述
  41.   end;
  42.   
  43.  CLOSE cursor_repayment; --关闭游标
  44.  DEALLOCATE cursor_repayment; --清空游标
  45.  
  46.  if LEN(@v_content)>0
  47.  begin
  48.   SET @v_body =\'<html><H1>自动还款所有异常列表</H1><body bgcolor=white><table border = 1><tr><th>标ID</th><th>期数</th><th>错误描述</th></tr>\'
  49.   SET @v_body = @v_body + @v_content +\'</table></body></html>\'
  50.   EXEC msdb.dbo.sp_send_dbmail
  51.   @recipients =N\'接收用户地址1@qq.com;接收用户地址2@qq.com\',@body = @v_body,@body_format =\'HTML\'
  52.   ,@subject =@v_titile,@profile_name =\'上一节点的配置文件名(db_profiler)\
二、创建Job(SqlServer代理->作业),设置执行参数,定时执行此存储过程,即可实现定时发送邮件效果。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28699126/viewspace-1074615/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-03-07

  • 博文量
    54
  • 访问量
    409213