通过SQL Server FAILED发送电子邮件

时间:2012-05-16 21:23:29

标签: sql-server sql-server-2008 sql-server-2005

我正在SQL Server 2008设置数据库邮件,以便将邮件发送到我的Gmail帐户。以下是我创建的DBMail个人资料的详细信息:

email id : xyz@gmail.com
Display Name : xyz
Reply email :
Server name : smtp.gmail.com
port no: 587
Check : This server requires a secure connection
Check : Basic Authentication
username : xyz@gmail.com ( should have gmail.com)
password : <mypassword>
confirm password : <mypassword>

然后我点击了下一个,并将其设为默认公开个人资料。

然后,我使用以下TSQL代码配置并发送DBMail

EXEC sp_CONFIGURE 'show advanced', 1
GO
RECONFIGURE
GO
EXEC sp_CONFIGURE 'Database Mail XPs', 1
GO
RECONFIGURE
GO

use msdb
go
EXEC sp_send_dbmail 
@profile_name='XYZ',
@recipients='XYZr@gmail.com',
@subject='Test message',
@body='Message Sent Successfully'

The output appears "Message Queued"

我的信息仍然失败了。我觉得我已经正确设置了服务器。任何意见都将不胜感激。

 SELECT * FROM sysmail_log

正文栏显示

  

“由于邮件服务器故障,邮件无法发送给收件人。(使用帐户1发送邮件(2012-05-16T17:05:00)。例外消息:无法连接到邮件服务器。(否)这样的主人是已知的。)“

3 个答案:

答案 0 :(得分:4)

一些建议的问题排查步骤:

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

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

  3. 尝试更改为端口465。

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

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

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

答案 1 :(得分:2)

如果您使用的是GMAIL,请注意以下一步:

启用不太安全的应用以使用您的帐户,这就是数据库邮件可以访问您的Gmail帐户的方式。

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

    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

答案 2 :(得分:0)

错误“未知此类主机”表示DNS问题,无法解决您提供给sysmail_add_account_sp的@mailserver_name。

我收到此错误,是因为我最初使用带有意外的前导空格的字符串使用@mailserver_name参数调用sysmail_add_account_sp。如下面第2项所述,重置服务器名称时没有前导空格,这解决了我的问题。

尝试这些事情:

  1. 使用以下命令仔细检查服务器名称:从sysmail_server中选择服务器名称
  2. 尝试使用以下命令重置服务器名称:EXEC dbo.sysmail_update_account_sp @account_name ='(您的帐户名称)',@mailserver_name ='(您的服务器名称)'
  3. 尝试ping服务器名称,并查看名称是否解析为IP地址(服务器无需响应ping,您只需要查看返回的IP地址即可)
  4. 尝试使用IP地址代替服务器名称,以查看是否可以解决错误(这将绕过您可能遇到的所有DNS问题)