无法从SQL Server 2012/2014/2016中的SQL查询发送电子邮件

问题描述 投票:0回答:1

我从向导配置了数据库邮件,并且能够获取电子邮件警报。

enter image description here

当我编写以下查询时:

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 = '[email protected]',
                  @subject = 'Database Mail Test'
        PRINT 'File Does not Exist in the G:\ location'
    END --IF
END

我没有收到任何电子邮件警报:

这里是输出:

(影响1行)邮件(编号:1065)已排队。文件在g:\位置不存在

enter image description here

描述:由于邮件服务器故障,无法将邮件发送给收件人。 (使用帐户1(2019-12-11T19:00:19)发送邮件。异常消息:无法将邮件发送到邮件服务器。(发送邮件失败。)]

所有SQL服务正在运行,以sysadmin用户身份执行脚本。有人可以建议:

sql sql-server sql-server-2008 sql-server-2012 sql-server-2016
1个回答
0
投票

该消息来自SMTP服务器,而不是DBMail。

这不是DBMail问题。该消息指示收件人电子邮件地址不存在。检查您的电子邮件地址。

如上所述here

一些建议的故障排除步骤:

  1. [使用Outlook客户端邮件程序,尝试通过与SQL Server使用同一台计算机的同一SMTP服务器发送消息。您可能会收到更有意义的错误消息。

  2. 端口可能被阻塞。尝试使用端口587将邮件发送到任何其他SMTP服务器。

  3. 尝试更改为端口465。

  4. 尝试取消选中个人资料中的“需要安全连接”位。

  5. 尝试使用网络内部的SMTP服务器中继到GMail。这可能更容易设置和运行。您需要安装IIS和SMTP组件(如果您没有本地SMTP服务器)可用于处理继电器。

  6. 评论http://mail.google.com/support/bin/answer.py?hl=en&answer=13287

[如果您使用的是GMAIL,则请注意以下额外步骤:

打开不太安全的应用程序以使用您的帐户,这就是数据库邮件可以访问您的gmail SMTP帐户的方式。

尝试使用以下代码发送测试邮件:

    USE msdb
    GO
    EXEC sp_send_dbmail @profile_name='XXX', -- Your profile name
    @recipients='[email protected]', -- Recipient's email address
    @subject='Test message',
    @body='This is the body of the test message.'

最后,尝试运行以下查询以查看其是否已发送

    SELECT * FROM sysmail_log
© www.soinside.com 2019 - 2024. All rights reserved.