2012-05-04 164 views
2

發送電子郵件我已經寫在C#與Framework 2.0的簡單的.NET Web應用程序。麻煩從.NET程序

它做的唯一的事情就是調用這個函數:

static void SendMail(string strSubject, string strBody, string strFrom, string strTo, string strHost) 
    { 
     MailMessage msg = new MailMessage(); 
     msg.From = new MailAddress(strFrom); 
     msg.To.Add(new MailAddress(strTo)); 

     msg.Subject = strSubject; 
     msg.Body = strBody; 
     msg.Priority = MailPriority.Normal; 

     SmtpClient smtpClient = new SmtpClient(); 
     smtpClient.Host = strHost; 
     smtpClient.Send(msg); 
    } 

它編譯和運行沒有出錯,但我沒有收到一封電子郵件,不管是誰我送它。

然而,奇怪的是,同樣的程序,編譯和運行我的經理的電腦上運行良好,併發送一封電子郵件。

我們都在Visual Studio中運行它2008年

他的電腦和我之間的唯一區別是,他是在Windows XP和我在Windows 7

的任何信息將是有益的。我正在尋找我可以檢查的東西。

+0

只是猜測,你的經理用他的憑據登錄,他有權發送電子郵件。現在,當你在你的機器上運行程序時,你根本沒有權限發送。什麼是主機類型? Exchange服務器?你在域內使用該程序嗎? – 2012-05-04 21:39:35

+0

先得到SMTP錯誤信息,然後從那裏開始 –

回答

0

找到了解決辦法!

在我的本地IIS(它是版本7)中,有一個名爲「SMTP電子郵件」的圖標。打開它,我發現它被設置爲「將電子郵件存儲在提取目錄中」。這一定是以前的程序員使用我的電腦設置的。我將它重置爲「發送電子郵件到SMTP服務器」,現在一切正常。

注意:IIS甚至不需要運行。

1

聽起來像它可能是一個防火牆問題。您計算機上的防火牆或網絡上的防火牆。另外,檢查你的垃圾文件夾。我知道這聽起來很簡單,但它對你的經理工作的事實使它看起來像一個非代碼問題。

+1

我的防火牆已關閉。但我在我的垃圾文件夾中看到兩封電子郵件。現在我必須記住我曾經使用過的設置。謝謝你的幫助! –

+0

@多米尼克,很高興解決。如果這是您的答案,請隨時將其標記爲已接受的答案。 :) – Josh

+0

哦,它確實生成了一些電子郵件的原因是因爲我將該程序發佈到我們的QA服務器並從那裏運行了Web應用程序。然後我的電腦將它標記爲垃圾郵件,所以我沒有看到它。 –

0

請問XP框訪問SMTP服務器?

有4個參數,你需要提供給您的SMTP服務器,以便能夠成功地使用SmtpClient,MAILMESSAGE等

  • 主機= 「SMTPServerHostName」
  • 端口= 「端口號」(一般端口25時)
  • 的userName = 「用戶名」
  • 密碼= 「密碼」

也許XP PC無法交流停止SMTPServerHostName,或者,如果您使用的是本地主機,也許XP工作站沒有安裝SMTP。

另一種可能性是,如約什說,主機:端口被阻止。

0

隨着您還沒有設置您的憑證或帳戶信息,所以當它試圖發送電子郵件的SmtpClient,它不能與任何帳戶信息發送。替換此:

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.Host = strHost; 
smtpClient.Send(msg); 

有了:

SmtpClient smtpClient = new SmtpClient(); 
smtpclient.Credentials = new NetworkCredentials(email, password); 
smtpClient.Host = strHost; 
smtpClient.Send(msg); 

換成你自己的電子郵件地址和密碼。

希望這有助於!

0

舊的XP機器可能有SMTP功能。我已經看到了確切的事情。 Windows 7沒有本地SMTP功能。我知道我的舊XP機器有一個帶有IIS的SMTP服務器,而我已經發送郵件的現有程序在Windows 7上失敗了。我厭倦了在開發環境中與它戰鬥,並且只是與它一起生活。