2014-11-09 108 views
0

在Windows中,您可以配置從控制面板中的郵件設置。我想知道的是信息存儲在哪裏?我需要編寫一個可以發送電子郵件的應用程序,默認情況下我想使用這些設置。我認爲,如果我用SmtpClient的參數構造函數會讀他們,但是當我運行下面的代碼:充分利用系統配置的SMTP服務器和主機在Windows

 var smtp = new SmtpClient(); 
     var host = smtp.Host; 
     var port = smtp.Port; 
     Console.WriteLine("{0}:{1}", host,port); 

我得到的主機爲空(雖然端口號是25)如果我發送消息通過它,它拋出一個異常說「主機沒有指定」。

我在哪裏可以得到這個預配置的數據?

回答

0

你需要檢查它的價值,否則這將是空之前,先設置屬性。但是,默認情況下,端口是25.這就是爲什麼你看到25端口,即使沒有指定。這裏是SmtpClient對象的Host屬性的定義。

 

    public string Host { set; get; } 
     Member of System.Net.Mail.SmtpClient 

    Summary: 
    Gets or sets the name or IP address of the host used for SMTP transactions. 

    Returns: 
    A System.Strin 

g that contains the name or IP address of the computer to use for SMTP transactions. 

嘗試......

 

    var smtp = new SmtpClient(); 
    smtp.Host = "localhost"; //your mail server host name or ip address 
    var host = smtp.Host; 
    var port = smtp.Port; 
    Console.WriteLine("{0}:{1}", host,port); 

+0

對不起,如果我不清楚。當我知道SMTP服務器時,我知道如何發送電子郵件。我的問題是如何獲得用戶通過控制面板或通過Outlook配置的smtp主機。 – 2014-11-09 03:16:55

0

通常你需要的SMTP服務器名稱的前手,並使用這個信息作爲你的程序配置的一部分。您可以讓用戶從Outlook設置中獲取此信息。我假設你已經知道這一點。不論出於什麼原因要動態獲得SMTP服務器名稱,這個活動可以看作是黑客和可能帶來安全問題的用戶。如果某些程序自動使用您在Outlook中預配置的郵件服務器發送我們的一些電子郵件,您是否可以成像?

隨着中說,一個實現這種方式是有一個第三方端口掃描程序作爲你的過程中獲得潛在的SMTP服務器名稱的列表,並使用HELO命令驗證SMTP存在的一部分。這應該有助於確定哪個IP是SMTP服務器。