如何用VB.NET将SQL Server指定数据发送至Outlook邮件?新手求助
当然可行啦!作为SQL新手也不用慌,咱们用SQL Server自带的**数据库邮件(Database Mail)**就能搞定,步骤我给你拆得明明白白:
第一步:先配置数据库邮件(仅需设置一次)
这是基础准备,后续发送邮件都靠它:
- 打开SQL Server Management Studio(SSMS),连接到你的数据库实例
- 展开左侧的「管理」节点,右键点击「数据库邮件」,选择「配置数据库邮件」
- 跟着向导一步步走:先启用数据库邮件功能,然后添加一个邮件账户(可以用你的个人邮箱或企业邮箱,记得提前开启邮箱的SMTP权限,比如QQ邮箱要开启POP3/SMTP并获取授权码)
- 创建一个邮件配置文件,把刚才添加的账户加进去,设为默认配置文件
第二步:写SQL查询获取要发送的数据
先把你需要发送的筛选好,比如要发送TodaySchedule的全量数据,或者RegisteredSchedule里指定日期的记录,示例代码如下:
-- 示例1:获取TodaySchedule的所有日程记录 SELECT 姓名, 性别, ScheduleDate, 负责人 FROM TodaySchedule -- 示例2:如果要筛选RegisteredSchedule中指定日期的记录 SELECT 姓名, 性别, ScheduleDate, 负责人 FROM RegisteredSchedule WHERE ScheduleDate = '2024-05-20' -- 替换成你需要的日期
如果想让邮件里的数据更美观,建议转成HTML表格格式,新手可以直接用下面的代码生成HTML内容:
DECLARE @htmlBody NVARCHAR(MAX) -- 生成HTML表格的头部 SET @htmlBody = N'<html><body><h2>日程数据汇总</h2><table border="1" cellpadding="5"><tr> <th>姓名</th><th>性别</th><th>日程日期</th><th>负责人</th></tr>' -- 拼接数据行 SELECT @htmlBody = @htmlBody + N'<tr> <td>' + 姓名 + N'</td> <td>' + 性别 + N'</td> <td>' + CONVERT(NVARCHAR(20), ScheduleDate, 23) + N'</td> <td>' + 负责人 + N'</td> </tr>' FROM TodaySchedule -- 这里可以替换成你的目标表或查询语句 -- 闭合HTML标签 SET @htmlBody = @htmlBody + N'</table></body></html>'
第三步:执行SQL命令发送邮件
用SQL Server自带的sp_send_dbmail存储过程就能直接发邮件,把刚才的配置和数据填进去就行:
EXEC msdb.dbo.sp_send_dbmail @profile_name = '你的邮件配置文件名', -- 第一步里设置的配置文件名称 @recipients = '收件人1@xxx.com,收件人2@xxx.com', -- 多个收件人用逗号分隔 @subject = '今日日程数据通知', @body = @htmlBody, -- 刚才生成的HTML表格内容 @body_format = 'HTML'; -- 指定邮件为HTML格式,表格才能正常显示
新手额外提醒
- 测试阶段先给自己发一封邮件,确认数据格式和内容都正确后再发给其他人
- 如果需要定时自动发送(比如每天早上发当日日程),可以创建SQL Server代理作业,把上面的查询和发送命令加进去,设置好执行时间即可
- 要是遇到权限报错,检查一下msdb数据库里的用户角色权限,确保SQL Server服务账号有发送邮件的权限
内容的提问来源于stack exchange,提问作者Bonito
相关产品推荐
相关产品推荐

