2012-01-20 43 views
0

我有一個C#服務檢查程序。該exe文件從bat文件中跳出,該文件還傳遞了許多參數(例如,您想要檢查多少服務的int計數,服務顯示名稱的字符串)以及emailTo,emailFrom,emailServer等,如同服務未運行,將發送電子郵件。這是電子郵件的部分代碼:在服務器上運行程序時發生郵件異常?

MailMessage mail = new MailMessage(emailFrom, emailTo); 
SmtpClient SMTP = new SmtpClient(emailServer); 
if (emailUser != "") 
{ 
    SMTP.Credentials = new NetworkCredential(emailUser, emailPass); 
} 
mail.Subject = "The " + service + " service has stopped running"; 
mail.Body = "Please take a look into the " + 
      service + " service and think about restarting."; 

SMTP.Send(mail); 

因此一臺服務器上我使用emailserver的爲「localhost」的傳入,在bat文件,並在運行時如果我檢查服務沒有那麼運行電子郵件發送正常,一切正常。然而,在另一臺服務器上,我再次使用「localhost」作爲我的emailServer,但是當我運行bat文件時。我收到一個錯誤System.Net.Mail.Smtp.Exception [8012],並且不發送電子郵件。這是不是在服務器上設置的東西,而不是造成我的問題的程序(服務器配置不是我強大的領域)。

謝謝。

+1

在你的函數中使用'try ... catch(Exception ex)',並向我們顯示'ex.Message'請...... – Marco

+1

服務帳號是否有權訪問smtp服務器? – KMan

回答

0

在程序出現故障的服務器上是否運行了電子郵件服務器?您正嘗試發送電子郵件至localhost(即執行程序的計算機)。如果SMTP端口25在該機器上沒有響應,您的電子郵件將不會被傳送。

對於emailServer您必須提供網絡中能夠接受和處理電子郵件的計算機的主機名。通常情況下,您不會使用localhost作爲該計算機的名稱。

+0

感謝馬丁 - 剛發現服務器上沒有電子郵件服務器,所以程序將無法在此服務器上運行。謝謝。 –

+0

爲了發送電子郵件,您不需要本地電子郵件服務器。假設你在網絡的某個地方有一個可以處理電子郵件的服務器,你應該指定該服務器爲'emailServer'。 –

+0

我知道我的公司的郵件服務器是「mail.mycompany.com」,但問題是這是爲外部公司 - 我的遠程桌面連接到他們的服務器(Windows 2003服務器),我累了localhost,但它沒有設置 - 並且我不知道他們的emailServer是什麼,我假設我不能使用我的comapnies? –

相關問題