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> 列表如下:</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