通过SQL Server发送电子邮件失败

4

我正在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

Body一栏显示:

“邮件无法发送给收件人,因为邮件服务器故障。(使用账户1发送邮件(2012-05-16T17:05:00)。异常消息:无法连接到邮件服务器。(找不到此主机)。)”


你能够ping通smtp.gmail.com吗? - sqllearner
3个回答

5

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

  1. 尝试使用与 SQL Server 相同的机器和 SMTP 服务器,使用类似 Outlook 的客户端邮件程序发送消息。这样可以获得更有意义的错误消息。

  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
看起来 SQL Server 数据库邮件存在一个错误,因为它似乎只支持端口 25587。在端口 465 上什么都无法工作。 - Francesco Mantovani

4
如果您使用GMAIL,请注意以下额外步骤:
1. 在配置了数据库邮件后,请登录您的GMAIL帐户并转到以下网址: https://www.google.com/settings/security/lesssecureapps 2. 打开“允许不安全的应用程序访问您的帐户”选项,这样数据库邮件就可以访问您的GMAIL SMTP帐户。
3. 尝试使用以下代码发送测试邮件:
    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

0

"No such host is known"错误表明了一个 DNS 问题,即您提供给sysmail_add_account_sp的@mailserver_name无法解析。

我遇到了这个错误,因为最初在调用sysmail_add_account_sp时,使用了一个带有前导空格的字符串作为@mailserver_name参数。按照下面第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 问题)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接