我有一個運行在Windows Server 2003上的ASP.NET應用程序,作爲其功能的一部分,它向用戶發送電子郵件以響應用戶註冊,密碼重置等。它運行在局域網內(實際上在州政府防火牆內部)。這裏是一些典型的代碼:SmtpClient函數如何沒有主機名?
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.IsBodyHtml = true;
message.From = new MailAddress(FromEmail);
message.To.Add(ToEmail);
message.Subject = Subject;
message.Body = FormattedMessageText;
SmtpClient client = new SmtpClient();
client.Send(message);
請注意,它調用SmtpClient構造函數而不指定主機名!發送工作正常。我試圖瞭解如何在沒有指定主機名的情況下工作(同一個Web服務器上的其他應用程序使用特定的主機名)。這一個不使用一個,但仍然有效!除了一個特殊的函數,它在任何情況下都不起作用,但是在一個特定的情況下,它總是返回「無法連接到遠程服務器」,我在過去經歷過一次沒有指定主機名。
奇怪的是,web.config中有一個mailSettings節點。它是應用程序的開發,因爲它當時產生明顯的默認值:
<system.net>
<mailSettings>
<smtp>
<network host="127.0.0.1" port="25" userName="" password="" />
</smtp>
</mailSettings>
</system.net>
是否有任何在你的web.config(或應用程序)指定smtp?它可能使用默認的中繼服務器,但很難說。 – Sam 2014-10-07 22:43:54
檢查應用程序所在機器的machine.config – Sam 2014-10-07 22:45:56
@Sam,我已將web.config中的mailSettings添加到問題中。在machine.config中沒有關於Smtp或mailSettings的有趣內容 – Cyberherbalist 2014-10-07 22:56:16