【问题标题】:Sending Email through SQL Server FAILED通过 SQL Server 发送电子邮件失败
【发布时间】:2012-05-16 21:23:29
【问题描述】:

我正在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)。异常消息:无法连接到邮件服务器。(否这样的主机是已知的)。)“

【问题讨论】:

  • 你能ping通smtp.gmail.com吗?

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


【解决方案1】:

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

  1. 尝试使用与 SQL Server 相同的计算机,使用 Outlook 等客户端邮件程序,通过同一 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

【讨论】:

  • 这看起来像是 SQL Server 数据库邮件中的一个错误,因为它似乎只支持端口 25587。端口 465 上没有任何工作
【解决方案2】:

如果您使用的是 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

【讨论】:

    【解决方案3】:

    错误“No such host is known”表示 DNS 问题,您提供给 sysmail_add_account_sp 的 @mailserver_name 无法解析。

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

    试试这些:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2020-09-16
      • 2016-10-30
      • 1970-01-01
      相关资源
      最近更新 更多