欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL Server存储过程邮件发送以表格方式发送

程序员文章站 2022-04-13 16:04:50
一、收到邮件显示: 二、存储过程代码部分: BEGIN SET NOCOUNT ON; --初始化 Declare @MailTo nvarchar(max) Declare @MailCc nvarchar(max) Declare @MailBcc nvarchar(max) Declare @ ......

一、收到邮件显示:

SQL Server存储过程邮件发送以表格方式发送

 

二、存储过程代码部分: 

begin

    set nocount on;
    --初始化
    declare @mailto nvarchar(max)
    declare @mailcc nvarchar(max)
    declare @mailbcc nvarchar(max)
    declare @mailsubject nvarchar(255)
    declare @mailbody nvarchar(max)
    declare @mailformat nvarchar(20)
    declare @signcount nvarchar(50)

    --查询表格中异常资料笔数

    select @signcount=count(1) from  表名称  where  筛选条件 

    set @mailsubject='異常共'+@signcount+'筆'
    set @mailformat='html'
    set @mailto='xxx.zzz@qq.com'    --收件人邮件地址
    set @mailcc='xxx.zzz@qq.com'   --抄送
    set @mailbcc='xxx.zzz@qq.com'  --密送
    set @mailbody=''    --发送内容

    set @mailbody =
    n'dear sir/madam:<br>異常共'+@signcount+'筆,請及時核對,謝謝!!!<br><h4>&nbsp;&nbsp;&nbsp;&nbsp;列表如下:</h4>' +

     --定义邮件表格尺寸大小
    n'<table border="1" style="font-size:11px;text-align:center" width="60%">' +     

    --定义列表对应列名称 
    n'<tr style="font-size:11"><th>工號</th>' +    
    n'<th>姓名</th>' +
    n'<th>已用天數</th>' +
    n'<th>實際已用天數</th>' +
    n'<th>異常狀態</th>' +

    --表主体结果
    cast ( ( select
        td = empid, '',
        td = empcname, '',
        td = [ulcola29-adjanlusepos-sum], '',
        td = vocatotalhours, '',
        td = [ulcola29-state], ''
        from  表名称  form   where  筛选条件   for xml path('tr'), type     --将查询出来结果以html语言 td/tr显示出来
        ) as nvarchar(max)

       ) +
    n'</table><br>以上為系統發送,請勿回復!!!<br>xx部xx課'

    declare @i int   
  begin
    set @i=0;


    exec asdb.dbo.xx_xxx_xxxxx      --执行sql邮件发送的一个功能地址,这个地址就要去问公司的负责人了

    --对应的邮件主体参数带入发送邮件
    @profile_name='mis_smtp_mail',     --系统设置的邮件发送名称    --公司邮件管理者db设置
    @recipients=@mailto,
    @copy_recipients=@mailcc,
    @blind_copy_recipients=@mailbcc,
    @subject=@mailsubject,
    @body=@mailbody,
    @body_format=@mailformat

    set @i=1;
  end

end