2011-07-20 40 views
0

我想創建一個小型的桌面應用程序,向辦公室(所有內部)的人發送電子郵件。我的應用程序可以在網絡上運行的個人電腦上運行,並且用戶可以運行他自己的電子郵件。從網絡上的計算機發送電子郵件 - NET 4.0

我正在看幾個例子,你需要SmtpClient,它需要等同於一個主機。有沒有一種方法可以將其設置爲使用本地機器?

   MailMessage mailObj = new MailMessage("[email protected]", 
       reader["recipientAddress"].ToString(), "Subject", "Body"); 
       SmtpClient SMTPServer = new SmtpClient("127.0.0.1"); 
       SMTPServer.Send(mailObj); 

我讀到127.0.0.1是本地機器。這會工作,還是有不同的方式去做這件事?

如果消息發送到外部電子郵件,我的消息也會出去嗎?

+0

本地機器是否運行SMTP服務器? – R0MANARMY

+0

我不確定。我所知道的是它連接到網絡並且機器具有Outlook作爲電子郵件客戶端。 – webdad3

回答

1

您必須在本地主機上安裝SMTP服務器才能發送郵件。

Outlook只通過POP3或IMAP等接收電子郵件

編輯: 即你需要

  1. 一些服務器,通過從您的SMTP客戶端接收郵件,並將其轉發到目的地;和
  2. 某些服務器接受郵件(通常通過SMTP)並將其存儲在郵箱中,以便人們可以通過POP3或IMAP或任何方式稍後檢索它們。

貴公司的郵件服務器通常應該都可以。


EDIT2:

你也許可以欺騙和利用SMTPClient傳遞郵件到收件人的郵箱服務器直接雖然。

嘗試解析MX記錄(請參閱How to get mx records for a dns name with System.Net.DNS?),並直接創建SMTPClient以返回最佳MX服務器。

如果Microsoft實施了足夠的SMTP規範,並且您的主機不被視爲發送垃圾郵件,則應通過郵件。

+0

如果我想發送電子郵件,我可以通過POP3嗎? – webdad3

+0

不幸的是,POP3僅用於檢索郵件。它是一個輪詢系統,而不是推送,即當客戶端連接時郵件必須在那裏被檢索,並且你不能將消息推送到客戶端。如果你想在你的程序中做到這一點,你必須實現POP3協議和以前生成的消息的存儲,這是不平凡的。因此,最簡單的方法是找到一些簡單的SMTP服務器,並在本地安裝它,如果你不想使用外部SMTP服務。或者編寫一個簡單的客戶端來取代outlook的角色... –

+0

請參閱編輯2.我沒有嘗試過這個,但它可能工作。 –