千家信息网

SQL数据库msdb.dbo.sp_send_dbmail函数发送邮件的示例分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍SQL数据库msdb.dbo.sp_send_dbmail函数发送邮件的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在推行系统中,时不时会有用户提出希
千家信息网最后更新 2026年10月31日SQL数据库msdb.dbo.sp_send_dbmail函数发送邮件的示例分析

这篇文章主要介绍SQL数据库msdb.dbo.sp_send_dbmail函数发送邮件的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

在推行系统中,时不时会有用户提出希望系统能自动推送邮件,由于手头的工具和能力有限,不少需求都借助于sql server的邮件触发来实现。

步骤:

1、配置邮箱。步骤略,网上有不少帖子说明,手工直接在管理-数据库邮件配置即可。配置完成后可以右键测试邮箱是否正常工作。

2、制作发送邮件脚本

3、sql server 代理定义周期计划

邮件脚本编写:

场景一:业务部门希望可以每周提供一次样品库存,即将sql查询的结果以附件的方式发给指定的人员。

 EXEC msdb.dbo.sp_send_dbmail   @profile_name = '<账户名>', --定义好的sql server 邮箱账户名   @recipients = '', --需要发送邮件的账号,多个用;间隔,建议通过一个邮件组来管理需要发送的地址   @body = 'The stored procedure finished successfully.',  -- 邮件正文   @subject = '样品仓物料清单',  --邮件抬头   @execute_query_database = 'UFDATA_001_2016',  --查询的数据库    --需要执行的查询   @query = 'select           distinct substring(cinvcode,4,100) 料号           from           CurrentStock           where           cwhcode = 12           and iquantity >=1',   @attach_query_result_as_file = 1,   @query_attachment_filename = 'item.csv'

邮件发送的结果

场景二,用户系统在OA系统完成的外部用户报备客户审批完成后触发邮件给对方。由于OA系统自动触发外部邮件格式有显示,据说需要js写代码,因为不熟悉,所以还是借助于sql server的邮件功能来实现。

预先写一个view,三个字段,需要发送的邮箱,邮件主题,邮件内容。

例子中将主题和主体做为一个,用到循环语句实现。

declare @mail nvarchar(200); declare @note nvarchar(500);  declare c cursor --游标 for select email,note from cux_dls_notice_v where operatedate + ' '+ operatetime >= DATEADD(MINUTE,-60,GETDATE()) --取最近一小时的记录发送,计划任务是60分钟执行一次。  open c fetch next from c into @mail,@note;  while @@FETCH_STATUS = 0 begin EXEC msdb.dbo.sp_send_dbmail @profile_name= '<账户名>', --定义好的sql server 邮箱账户名 @recipients=@mail, --需要发送的邮箱 @subject=@note, --邮件标题 @body=@note --邮件主题 fetch next from c into @mail,@note; end close c; deallocate c;

场景三,还是在OA系统里,销售申请特价之后提交审批,审批人系统可以收到邮件通知,并在邮件中和销售讨论后,再回到系统中审批。由于申请表的内容多,需要用html的发送格式。

做法和场景二类似,重点是邮件主题需要生成为html的格式。

还是一样把需要展现的内容做成一个view,我个人喜欢做view,这样有什么变化调整view就可以了。

/*声明变量*/declare @tableHTML varchar(max)declare @mail nvarchar(200);declare @note nvarchar(500);--设置问候词set @tableHTML = '';--设置表头set @tableHTML=@tableHTML+'

您好!

请审批下面的价格申请:

';--启用游标declare c cursor for--查询结果selecta.email,a.note,@tableHTML+''+''+''+''+''+''+''+''+''+''+''+''+''+''+''from(select email,note,rfq_quotation_number ,lastname,pl3,客户中文+'/'+客户英文 as customer,disty_name,snd_disty,sold_to_customer,fully_part_no,currency,isnull(cast(volume as nvarchar(10)),'') volume,isnull(cast(requested_disty_cost as varchar(10)),'') requested_disty_cost,isnull(cast(cust_requested_price as varchar(10)),'') as cust_requested_price,isnull(cast(competitor as varchar(100)),'') competitor,isnull(cast(competitor_part_no as varchar(50)),'') competitor_part_no,isnull(cast(competitor_price as varchar(10)),'') competitor_pricefrom cux_rfq_v where currentnodetype = 1 and lastoperatedate + ' '+ lastoperatetime >= DATEADD(MINUTE,-60,GETDATE()) --找最近60分的记录,并发送) aopen cfetch next from c into @mail,@note,@tableHTML;while @@FETCH_STATUS = 0beginEXEC msdb.dbo.sp_send_dbmail@profile_name= '<账户名>', --定义好的sql server 邮箱账户名,@recipients=@mail,@subject=@note,@body= @tableHTML,@body_format='HTML'fetch next from c into @mail,@note,@tableHTML;endclose c;deallocate c;


以上是"SQL数据库msdb.dbo.sp_send_dbmail函数发送邮件的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

邮件 系统 邮箱 内容 数据 数据库 主题 场景 查询 客户 格式 用户 结果 账户 还是 配置 函数 示例 分析 样品 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 互联网高科技 广州大一互联网络科技有限公司 河南云网互联网络科技有限公司 互联网最新的科技 腾讯阿里互联网科技 互联网科技开发公司 互联网金融 科技金融 互联网与未来科技 菲比寻常互联网科技 深圳期待互联网科技 华脉科技工业互联网产品 创业天下互联网科技有限公司 崇明区互联网教育科技诚信经营 天津腾达互联网科技有限公司 西安小鹰速贷互联网科技有限公司 朱啸虎曾投资哪些互联网科技企业 黑科技 体验场景 互联网大会 萌小萌互联网科技河南有限公司 科技发展第三阶段互联网时代 碳银互联网科技 云电互联网科技 互联网金融和金融科技 恒生科技互联网指数分析 移动互联网科技公司 晓花互联网科技有限公司网址 工业互联网山东科技大学 互联网相关科技技术 卡尔迅互联网科技有限公司 知域互联网科技有限公司官网
0
RFQ NosalesPL3Customerdisty_name2nd distySold To CustomerPart NoCurrencyVolumeRequested DCCustomer RPCompetitorCompetitor PNCompetitor Price
'+rfq_quotation_number+''+lastname+''+pl3+''+customer+''+disty_name+''+snd_disty+''+sold_to_customer+''+fully_part_no+''+currency+''+volume+''+requested_disty_cost+''+cust_requested_price+''+competitor+''+competitor_part_no+''+Competitor_Price+'