巧用SqlServer数据库实现邮件自动发送功能

使用数据库发送邮件需要三个步骤,配置数据库的邮件服务、编写存储过程、设置SQL作业,接下来开始逐步分享:

配置数据库邮件:

在SqlServer左侧菜单栏中,找到管理页签中数据库邮件选项:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

接下来开始配置数据库邮件:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

这里我们选择创建一个全新的配置,并启动该功能,随后下一步即可:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

给配置文件起一个霸气的名字,说明随意填写即可,这个配置名字需要记得,后面我们还需要使用到它,点击添加功能,开始进行邮箱详细信息的配置:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

这里填写好你们公司购买的邮件服务账号信息即可,如果没有的话,也可以使用QQ邮箱自带的SMTP功能,启动SMTP服务即可,功能上肯定会有一些限制:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

填写好配置信息之后,列表中会出现刚才配置的SMTP账户信息:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

剩下的步骤就是继续、继续、向着胜利出发:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

成功之后也不要骄傲哦,需要测试一下,看邮箱配置是否可以正常地发送邮件,这一点非常的重要,否则后面的操作都会受到影响:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

编写存储过程:

上述步骤测试通过后,我们开始进行存储过程的编写了,为SQL作业的自动执行打下脚本的基础。

存储过程的编写思路就是:将邮件需要发送的内容进行获取,然后通过SQL调用发送邮件的存储过程,将其需要的参数一一提供即可。

这里使用的存储过程是:sp_send_dbmail,需要的主要参数解释下:

  1. @profile_name:这个参数为刚才配置数据库邮件的名称。
  2. @recipients:接收人邮箱地址。
  3. @subject:邮件标题。
  4. @body:邮件内容。
  5. @body_format:邮件格式。
CREATE PROC [dbo].[AutoOrdersEmailNotice]
AS
BEGIN
DECLARE @EmailAddress NVARCHAR(100) = 'xxxxx@qq.com';
DECLARE @CONTENT NVARCHAR(500) = N'<h1>2021-6-5:订单汇总报表</h1><hr /><table border="1" width="500">
<tr align="center" style="font-weight:800;background-color:blue"><td>序号</td><td>产品名</td><td>订单数</td><td>单价</td><td>总价</td></tr>
<tr align="center"><td>1</td><td>车厘子</td><td>200</td><td>100</td><td>20000</td></tr>
<tr align="center"><td>2</td><td>冰糖心</td><td>100</td><td>50</td><td>5000</td></tr>
<tr align="center"><td>3</td><td>芝麻蕉</td><td>500</td><td>40</td><td>20000</td></tr>
</table>';
Exec msdb.dbo.sp_send_dbmail @profile_name='TestSqlMail',
@recipients=@EmailAddress,
@subject=N'2021-6-5日,订单汇总报表',
@body=@CONTENT,
@body_format = 'HTML'
END
  • 1.

编写后同样需要测试,如果可以执行该存储,可以实现邮件的正常发送功能,那么我们此时离胜利只有一步之遥了。

设置SQL作业:

SQL作业的用途就是可以自动、定时地执行SQL脚本,例如:每天更新用户年龄、更新一些订单的状态等等。

使用SQL作业,首先需要开启SqlServer代理服务:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

接下来我们新建作业,用于执行刚才编写的存储过程:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

填写作业需要的相关信息:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

解析来选择新建步骤,不要点击确定按钮,这里填写SQL作业需要执行哪个数据库下面的,哪段SQL脚本:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

设置SQL作业的执行计划,这里根据实际需求设置即可,我这里需要每天定时发送:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

设置成功之后,同样需要测试一下:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

数据库自动发送邮件成功了,流下了激动的泪水,偷懒果然会让人快乐,晚上可以加鸡腿了。当然我们每天需要关注一下,邮件发送的日志,掌握功能的运行情况:

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

巧用SqlServer数据库实现邮件自动发送功能-开源基础软件社区

总结一下:

这就是使用SqlServer完成的邮件自动发送功能,不同的数据库配置肯定会有所不同,但思路都是大相径庭的。

1.使用 MSSQLServer 服务会用到的用户帐户登录到 Microsoft Windows NT? 4.0 或 Windows? 2000 上。该用户帐户必须是本地计算机的管理员和域帐户。 2.确认 Exchange Server 客户端 (Exchnge32.exe) 或 Microsoft Outlook? 客户端 (Outlook.exe) 能够连接到 Exchange Server 而且能够发送电子邮件。如果使用 Outlook,确保 Outlook 安装时选择了 "用于企业或工作组 "选项。 3.确认所用的 Exchange Server 配置文件中没有个人消息存储 (.pst)。Exchange Server 配置文件的名字不应超过 32 个字符。 4.在 "服务 "选项卡上,确认 Microsoft Exchange Server 和个人通讯簿是唯一可用的服务,然后单击 "发送 "选项卡。确认 "发送到 "框中选定的内容是 Exchange Server 中的邮箱,它应该有一个类似于 "邮箱 - <友好的用户名 > "的名字(其中 <友好的用户名 >是在第一步中登录到 Windows NT 4.0 或 Windows 2000 的用户名)。 5.要运行带有 Exchange Server 的 "SQL 邮件 ",MSSQLServer 服务必须在第一步中登录的同一个用户帐户下运行。在 "控制面板 "中,双击 "服务 ",选择 MSSQLServer 服务,然后单击 "启动 "。 6.确认 "SQL 邮件 "的配置文件是否正确。在 SQL Server 企业管理器中,展开服务器,展开 "支持服务 "文件夹,选择 "SQL 邮件 ",然后用右键单击。单击 "属性 ",然后在 "常规 "选项卡上,确保 "配置文件名 "框中指定的配置文件名正确。(事件探查器名必须与第三步中用到的配置文件名匹配。)单击 "测试 ",验证配置文件设置正确。 7.如果 "SQL 邮件 "无法启动(例如,显示错误信息指出配置文件不正确),请检查设置确保未将 Outlook Express 设置为默认的电子邮件客户程序。在 "控制面板 "中双击 "Internet "选项。在 "程序 "选项卡中,验证 Outlook Express 不在电子邮件组合框中。如果不得不将默认的电子邮件客户程序更改为 Outlook Express 以外的客户程序,那么,可能需要先验证 "SQL 邮件 "能够用邮件配置文件启动,然后再停止并重新启动 MSSQLServer 服务。 在有些情况下,邮件的配置文件可能会损坏而且 "SQL 邮件 "将无法使用它。要更正这个问题,需要把配置文件复制到另一个文件名下,或重新创建配置文件。 8.如果用来启动 Microsoft SQL Server? 的帐户没有权限访问 Exchange 服务器,那么就无法使用 "SQL 邮件 "。执行 xp_cmdshell 来测试 SQL Server 对 Exchange Server 的访问权限,它执行与 "SQL 邮件 "相同的权限。使用下面的命令测试对服务器的连接,假定 Exchange Server 位于名为 "MyServer "的计算机上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝈蝈(GuoGuo)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值