sql - 无法从 SQL Server 2012/2014/2016 中的 SQL 查询发送电子邮件
问题描述
我从向导中配置了数据库邮件并能够获取电子邮件警报。
当我编写以下查询时:
DECLARE @IsFileExists INT
EXEC Master.dbo.xp_fileexist 'g:\abc.bak', @IsFileExists OUT
BEGIN
IF @IsFileExists = 1
BEGIN
PRINT 'File Exists in the G:\ location'
END
ELSE
BEGIN
DECLARE @htmlbody VARCHAR(4000)
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'EMAIL',
@recipients = 'ylx@xly.com',
@subject = 'Database Mail Test'
PRINT 'File Does not Exist in the G:\ location'
END --IF
END
我没有收到任何电子邮件警报:
这是输出:
(受影响的 1 行)
邮件(ID:1065)排队。
g:\ 位置中不存在文件
描述:由于邮件服务器故障,无法将邮件发送给收件人。(使用帐户 1 (2019-12-11T19:00:19) 发送邮件。异常消息:无法向邮件服务器发送邮件。(发送邮件失败。)。)
所有 SQL 服务都在运行,以 sysadmin 用户身份执行脚本。有人可以建议:
解决方案
该消息来自 SMTP 服务器,而不是 DBMail。
这不是 DBMail 问题。该消息指示收件人电子邮件地址不存在。检查您的电子邮件地址。
如此处所述
一些建议的故障排除步骤:
尝试使用与 SQL Server 相同的机器,使用 Outlook 等客户端邮件程序,通过同一 SMTP 服务器发送消息。您可能会收到更有意义的错误消息。
端口可能被阻塞。尝试使用端口 587 将邮件发送到任何其他 SMTP 服务器。
尝试更改为端口 465。
尝试取消选中您个人资料中的“需要安全连接”位。
尝试使用网络中的 SMTP 服务器中继到 GMail。这可能更容易设置和运行。如果您没有可用于处理中继的本地 SMTP 服务器,则需要安装 IIS 和 SMTP 组件。
查看http://mail.google.com/support/bin/answer.py?hl=en&answer=13287
如果您使用的是 GMAIL,请注意以下额外步骤:
在数据库邮件中配置电子邮件后,请登录您的 gmail 帐户并转到
打开您不太安全的应用程序以使用您的帐户,这就是数据库邮件可以访问您的 gmail SMTP 帐户的方式。
尝试使用以下代码发送测试邮件:
USE msdb
GO
EXEC sp_send_dbmail @profile_name='XXX', -- Your profile name
@recipients='abc@yahoo.com', -- Recipient's email address
@subject='Test message',
@body='This is the body of the test message.'
最后,尝试运行以下查询以查看其是否已发送
SELECT * FROM sysmail_log
推荐阅读
- vba - 如何下载 Excel 文件的附件?
- azure-active-directory - 使用 Azure Active Directory 对网站进行加密操作时出错
- gantt-chart - 如何在 AnyChart Gantt Resource 中实现假期和工作日
- html - og:image 不断给我损坏的图像
- android - 当对一个函数进行单元测试时,当你模拟它使用的函数时,最佳实践是什么
- java - 为什么我的代码没有检测到我的字符串中的数字。我正在使用正则表达式
- iis - IIS 应用程序初始化调用导致事件日志中出现 0x80070032 错误
- python - 使用掩码从特定坐标处的图像(二维数组)中提取像素值
- reactjs - 生产环境打破material-ui样式
- regex - 在两个不同的字符串之间搜索和替换内容