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

正文栏显示

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

4

3 回答 3

5

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

  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

于 2012-05-16T21:36:19.407 回答
3

如果您使用的是 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
于 2016-04-03T03:06:53.527 回答
0

错误“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 = '(your account name)', @mailserver_name = '(your server name)'
  3. 尝试 ping 服务器名称,看名称是否解析为 IP 地址(服务器无需响应 ping,您只需要查看返回的 IP 地址即可)
  4. 尝试使用 IP 地址代替服务器名称,看看是否可以解决错误(这将绕过您可能遇到的任何 DNS 问题)
于 2020-01-06T01:39:54.250 回答