【发布时间】:2021-08-09 22:05:45
【问题描述】:
我到处搜索(感觉)寻找解决方案和/或指导。我最后的手段是问。我在 Windows Server 上运行 SQL Server 2016。数据库邮件不工作。我已经设置了配置文件,并通过右键单击 SSMS 左侧窗口中的数据库邮件节点提交了一封测试电子邮件。
当我使用 SELECT * FROM msdb.dbo.sysmail_allitems; 查询 SQL 时,电子邮件处于“未发送”状态
我创建了一个 VBscript 文件来使用 CDO 发送电子邮件 - 使用相同的电子邮件服务器值(主机名、端口、电子邮件发件人、用户名、密码等)。 CDO 脚本成功发送电子邮件。
我不确定去哪里解决 SQL 问题。
没有数据写入SELECT * FROM msdb.dbo.sysmail_event_log;
诚然,我对 SQL 配置不是很好 - 我只需要设置它。我试图确定为什么状态只是停留在“未发送”状态。我可以采取什么措施来强制发送?是否有一些消息或日志我可以查看以了解为什么它没有向前推进?
编辑:我已将相同的凭据放入 sql 报告服务配置“电子邮件设置”中 - 我能够创建订阅并成功发送电子邮件。这让我很困惑,因为我看到 SSRS 订阅需要访问 SQL 代理并创建计划作业。
那么,我在 SQL 中的数据库邮件帐户与我在 SSRS 中创建的帐户有何不同? (我知道我不是在发布图片,但那些向导有个人信息,所以我不知道为我无法共享的数据值发布屏幕截图的价值。
感谢任何帮助。 谢谢
【问题讨论】:
-
我想补充一点,'sent_date' 列是空的。这意味着(如我所读)SQL 尚未尝试发送消息。
-
SQL Server 使用基于 .NET Framework 的外部工具 DatabaseMail.exe 来传递 DB 邮件消息。
exec msdb..sysmail_help_status_sp是否返回STARTED?select * from msdb..sysmail_event_log中是否有相关的错误信息?服务器的事件日志查看器中是否有相关的错误消息? -
@AlwaysLearning。谢谢 - 发现 Windows 服务器有 .Net Framework 4 但没有 3.5。已安装,现在距离越来越近,但仍未发送电子邮件。回答您的问题:是的 - 现在 sysmail_help_status_sp 返回 STARTED。在日志文件中,我收到以下错误:“由于邮件服务器故障,无法将邮件发送给收件人。(使用帐户 2 发送邮件(2021-08-11T09:02:36)。异常消息: 无法向邮件服务器发送邮件。(发送邮件失败。)"
-
听起来你现在走在了正确的轨道上。应该以 SMTP 4xx 和 5xx 错误代码的形式提供更多信息,这将有助于缩小最终问题的范围。还要在事件查看器的应用程序日志中查看来自
DatabaseMail源的消息。
标签: sql sql-server database-mail