当 MSSQL 通过 Microsoft Online 发送电子邮件时“必须先发出 starttls 命令”

当 MSSQL 通过 Microsoft Online 发送电子邮件时“必须先发出 starttls 命令”

我在 MSSQL Server 2008 R2 中编写了一个存储过程,当我的应用程序记录错误时,它会发送电子邮件。它在我们办公室的服务器上运行良好,但当我在我们的远程服务器上运行它时,我得到了

must issue a starttls command first

因此,也许两台服务器的某个设置有所不同,这就是为什么它在一台服务器上可以工作,而在另一台服务器上却不行。我该如何设置服务器,让它先发出“starttls 命令”?

答案1

我认为您的“必须先发出 starttls 命令”错误消息来自您要向其发送电子邮件的邮件服务器。它可能设置为仅接受加密连接以进行消息传输。您可以通过尝试 telnet 进入邮件服务器并模仿 SMTP 协议交换来验证这一点,该协议交换可能看起来有点像这样:

油灰-telnet mail.example.com 25

> 220 mail.example.com Microsoft ESMTP MAIL Service ready at Wed, 29 Jun 2011 11:57:31 +0200
< helo test
> 500 5.3.3 Unrecognized command
< helo test
> 250 mail.example.com Hello [123.45.67.89]
< mail from:<[email protected]>
> 250 2.1.0 Sender OK
< rcpt to:<[email protected]>
> 250 2.1.5 Recipient OK
< data
> 354 Start mail input; end with <CRLF>.<CRLF>

在此示例中,以“>”开头的行是邮件服务器回复,以“<”开头的行是您需要输入才能获取回复的内容。将 mail.example.com 替换为您使用的邮件服务器。如果您在交换中的任何地方看到“必须先发出 starttls”,那么就是这个。

如果您使用数据库邮件配置向导SQL Server 2008 定义您的邮件服务器帐户设置以及用于发送邮件的 sp_send_dbmail 存储过程,您只需确保在帐户的属性中选中“此服务器需要安全连接 (SSL)”复选框。

相关内容