Sql-Server

當 MSSQL 通過 Microsoft Online 發送電子郵件時,“必須先發出 starttls 命令”

  • June 29, 2011

我在 MSSQL Server 2008 R2 中編寫了一個儲存過程,它會在我的應用程序記錄錯誤時發送電子郵件。它在我們辦公室的伺服器上執行良好,但是當我在遠端伺服器上執行它時,我得到了

must issue a starttls command first

因此,也許兩台伺服器之間存在不同的設置,這就是為什麼它在一台伺服器上執行而不是在另一台伺服器上執行的原因。如何設置伺服器以使其發出“首先命令的 starttls”?

我相信您的“必須首先發出 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:<test@test.com>
> 250 2.1.0 Sender OK
< rcpt to:<testuser@example.com>
> 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) " 複選框在帳戶的屬性中被選中。

引用自:https://serverfault.com/questions/285212