2011-07-20 61 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.我没有尝试过这个,但它可能工作。 –