当前位置:   article > 正文

SQLSERVER 数据库邮件发送以表格形式发送(存储过程内容发邮件)_sql server怎么发送邮件带报表附件

sql server怎么发送邮件带报表附件

SQLSERVER 数据库邮件发送以表格形式发送

直接开始不哔哔!

一、数据库配置(以图文展现)

1.以sa或者windows身份登录数据库

2.选择数据库管理下面的数据库邮件:

3.选择数据库邮件左击选择配置数据库邮件。

直接下一步

 

 这里我们选择通过执行以下任务来安装数据库邮件

 配置文件名称然后点击添加SMTP邮箱用户

 

 填写好以下信息

 

直接下一步下一步就可以了

 二、代码片段——发送邮件

 这边我是把存储过程执行通过邮件以表格的形式发送的‘

代码如下:

  1. /*声明变量*/
  2. declare @tableHTML NVARCHAR(max)
  3. --设置问候词
  4. set @tableHTML ='<html><body><table><tr><td><p><font color="#000080" size="3" face="Verdana">您好!</font></p><p style="margin-left:30px;"><font size="3" face="Verdana">价格:</font></p></td></tr><font color=" #d5d5d5">'
  5. --<html><body><table><tr><td><p> <font color="#000080" size="3" face="Verdana">';
  6. --set @tableHTML = @tableHTML+'</p><p style="margin-left:30px;">系统数据</p>'
  7. --设置表头
  8. set @tableHTML=@tableHTML
  9. +'<tr><td><table border="1" style="border:1px solid #d5d5d5;border-collapse:collapse;border-spacing:0;margin-left:25px;margin-top:15px;"><tr style="height:25px;background-color: rgb(219, 240, 251);">
  10. <th style="width:150px;">dd</th>
  11. <th style="width:200px;">tt</th>
  12. <th style="width:80px;">dd</th>
  13. <th style="width:100px;">dd</th>
  14. <th style="width:100px;">dd</th>
  15. <th style="width:100px;">dd</th>
  16. <th style="width:100px;">rrr</th>';
  17. CREATE TABLE #tNOOK_01 (id char(20), gys char(50),sl char(50),ck char(50),km char(50),hj char(50) ,pd char(50) )
  18. insert into #tNOOK_01 exec khpde_tangbing
  19. --设置表体
  20. set @tableHTML=@tableHTML+'<tr>'
  21. + CAST((SELECT
  22.         td = id, '',
  23.         td = gys, '',
  24.         td = sl, '',
  25.         td = ck, '',
  26.         td = km, '',
  27. td = hj, '',
  28. td = pd, ''
  29.         FROM #tNOOK_01
  30. for xml path('tr'),type
  31. ) as NVARCHAR(max))
  32. +N'</table>'
  33. EXEC msdb.dbo.sp_send_dbmail
  34. --@profile_name = '1170683823@qq.com', --定义好的sql server 邮箱账户名
  35. @recipients = 'dujun@shsongz.com', --需要发送邮件的账号,多个用;间隔,建议通过一个邮件组来管理需要发送的地址
  36. @body = @tableHTML, -- 邮件正文
  37. @body_format ='HTML', --邮件格式 默认为TEXT 可以改成HTML
  38. @subject = '价格清单' --邮件抬头
  39. @execute_query_database = '' , --查询的数据库
  40. @query='SQL语句'--需要执行的查询
  41. drop table #tNOOK_01 --删除零时表

!!——测试可用

发送效果如下:

        只是截屏了表头:表体没有截图哦

下面是借鉴 msdb.dbo.sp_send_dbmail存储过程的使用参数。

@profile_name= ] 'profile_name'

发送邮件的配置文件的名称。profile_name 的类型为 sysname,默认值为 NULL。profile_name 必须是现有数据库邮件配置文件的名称。如果未指定 profile_name,则 sp_send_dbmail 使用当前用户的默认专用配置文件。如果该用户没有默认专用配置文件,sp_send_dbmail 会使用 msdb 数据库的默认公共配置文件。如果用户没有默认的专用配置文件,而且数据库也没有默认的公共配置文件,则必须指定 @profile_name

@recipients= ] 'recipients'

要向其发送邮件的电子邮件地址列表,以分号分隔。收件人列表的类型为 varchar(max)。虽然此参数是可选参数,但是必须至少指定 @recipients@copy_recipients 或 @blind_copy_recipients 中的一个,否则sp_send_dbmail 将返回错误。

@copy_recipients= ] 'copy_recipients'

要向其抄送邮件的电子邮件地址列表,以分号分隔。抄送件收件人列表的类型为 varchar(max)。虽然此参数是可选参数,但是必须至少指定 @recipients@copy_recipients 或 @blind_copy_recipients 中的一个,否则 sp_send_dbmail 将返回错误。

@blind_copy_recipients= ] 'blind_copy_recipients'

要向其密件抄送邮件的电子邮件地址列表,以分号分隔。密件副本收件人列表的类型为 varchar(max)。虽然此参数是可选参数,但是必须至少指定 @recipients@copy_recipients 或 @blind_copy_recipients 中的一个,否则 sp_send_dbmail 将返回错误。

@subject= ] 'subject'

电子邮件的主题。主题的类型为 nvarchar(255)。如果未指定主题,则默认为“SQL Server 消息”。

@body= ] 'body'

电子邮件的正文。邮件正文的类型为 nvarchar(max),默认值为 NULL。

@body_format= ] 'body_format'

邮件正文的格式。该参数的类型为 varchar(20),默认值为 NULL。如果已指定,则待发邮件的标头设置会指示邮件正文具有指定格式。该参数可能包含下列值之一:

  • TEXT
  • HTML

默认为 TEXT。

@importance= ] 'importance'

邮件的重要性。该参数的类型为 varchar(6)。该参数可能包含下列值之一:

  • Low
  • Normal
  • High

默认值为 Normal。

@sensitivity= ] 'sensitivity'

邮件的敏感度。该参数的类型为 varchar(12)。该参数可能包含下列值之一:

  • Normal
  • Personal
  • Private
  • Confidential

默认值为 Normal。

@file_attachments= ] 'file_attachments',

电子邮件附件的文件名列表,以分号分隔。必须使用绝对路径指定列表中的文件。附件列表的类型为nvarchar(max)

@query= ] 'query'

要执行的查询。查询结果可以作为文件附加,或包含在电子邮件的正文中。查询的类型为 nvarchar(max),并且可以包含任何有效的 Transact-SQL 语句。请注意,查询在单独的会话中执行,所以调用 sp_send_dbmail的脚本中的局部变量不可用于查询。

@execute_query_database= ] 'execute_query_database'

存储过程在其中运行查询的数据库上下文。该参数的类型为 sysname,默认为当前数据库。只有在指定 @query 时,此参数才适用。

@attach_query_result_as_file= ] attach_query_result_as_file

指定查询结果集是否作为附件返回。attach_query_result_as_file 的数据类型为 bit,默认值为 0。

如果该值为 0,则查询结果包含在电子邮件的正文中,在 @body 参数的内容之后。如果该值为 1,则结果作为附件返回。只有在指定 @query 时,此参数才适用。

@query_attachment_filename= ] query_attachment_filename

指定查询结果集附件使用的文件名。query_attachment_filename 的数据类型为 nvarchar(255),默认值为 NULL。如果 attach_query_result 为 0,则忽略此参数。如果 attach_query_result 为 1 且此参数为 NULL,则数据库邮件会创建任意文件名。

@query_result_header= ] query_result_header

指定查询结果是否包含列标题。query_result_header 值的数据类型为 bit。如果该值为 1,则查询结果包含列标题。如果该值为 0,则查询结果不包含列标题。该参数的默认值为 1。只有在指定 @query 时,此参数才适用。

@query_result_width = ] query_result_width

用于设置查询结果的格式的线条宽度(字符)。query_result_width 的数据类型为 int,默认值为 256。提供的值必须介于 10 和 32767 之间。只有在指定 @query 时,此参数才适用。

@query_result_separator= ] 'query_result_separator'

用于分隔查询输出中的列的字符。分隔符的类型为 char(1)。默认为“ ”(空格)。

@exclude_query_output= ] exclude_query_output

指定是否使用电子邮件返回查询执行的输出。exclude_query_output 的数据类型为 bit,默认值为 0。当此参数为 0 时,sp_send_dbmail 存储过程的执行将在控制台上打印作为查询执行结果而返回的消息。当此参数为 1 时,sp_send_dbmail 存储过程的执行不会在控制台上打印任何查询执行消息。

@append_query_error= ] append_query_error

指定是否在 @query 参数指定的查询返回错误时发送电子邮件。append_query_error 的数据类型为 bit,默认值为 0。如果此参数的值为 1,则数据库邮件会发送电子邮件,并电子邮件的正文中显示查询错误消息。如果此参数的值为 0,则数据库邮件不发送电子邮件,sp_send_dbmail 在结束时会返回代码 1,指示失败。

@query_no_truncate= ] query_no_truncate

指定是否使用可避免截断大型可变长度数据类型(varchar(max)nvarchar(max)varbinary(max)xmltextntextimage 和用户定义类型)的选项执行查询。设置该选项后,查询结果将不包含列标题。query_no_truncate 值的数据类型为 bit。当该值为 0 或未指定时,查询中的列将截断为 256 个字符。当该值为 1 时,不截断查询中的列。此参数的默认值为 0

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/728422
推荐阅读
相关标签
  

闽ICP备14008679号