【问题标题】:Sending e-mail from computer on network - .NET 4.0从网络上的计算机发送电子邮件 - .NET 4.0
【发布时间】:2011-07-20 03:23:22
【问题描述】:

我正在尝试创建一个小型桌面应用程序,用于向办公室中的人员(所有内部人员)发送电子邮件。我的应用程序将在同样在网络上的 PC 上运行,并且用户将运行 Outlook 来处理他自己的电子邮件。

我正在查看几个需要 SmtpClient 并且它需要等于主机的示例。有没有办法可以将其设置为使用本地机器?

                MailMessage mailObj = new MailMessage("admin@network.com",
                reader["recipientAddress"].ToString(), "Subject", "Body");
                SmtpClient SMTPServer = new SmtpClient("127.0.0.1");
                SMTPServer.Send(mailObj);

我读到 127.0.0.1 是本地机器。这行得通吗,还是有其他方法可以解决这个问题?

如果它向外部电子邮件发送消息,我的消息也会消失吗?

【问题讨论】:

  • 本地机器是否运行 SMTP 服务器?
  • 我不确定。我所知道的是它已连接到网络并且机器具有 Outlook 作为电子邮件客户端。

标签: c#-4.0 .net-4.0 system.net.mail


【解决方案1】:

您必须在本地主机上安装 SMTP 服务器才能发送邮件。

Outlook 仅通过 POP3 或 IMAP 等方式接收电子邮件。

编辑: 即你需要

  1. 某些服务器通过 SMTP 从您的客户端接收邮件并将其转发到其目的地;和
  2. 某些服务器接受邮件(通常通过 SMTP)并将其存储在邮箱中,以便人们以后可以通过 POP3 或 IMAP 或其他任何方式检索它们。

您公司的邮件服务器通常应该两者兼得。


编辑2:

你或许可以作弊并使用SMTPClient直接将邮件投递到收件人的邮箱服务器。

尝试解析 MX 记录(请参阅 How to get mx records for a dns name with System.Net.DNS?)并直接创建一个 SMTPClient 到返回的最佳 MX 服务器。

如果 Microsoft 实施了足够多的 SMTP 规范,并且您的主机不被视为发送垃圾邮件,那么邮件应该会通过。

【讨论】:

  • 如果我想发送电子邮件,我可以通过 POP3 来完成吗?
  • 很遗憾,POP3 仅用于检索邮件。它是一个轮询系统而不是推送,即当客户端连接时必须在那里检索邮件,并且您不能将消息推送到客户端。如果您想在您的程序中执行此操作,则必须实现 POP3 协议和之前生成的消息的存储,这是非常重要的。因此,如果您不想使用外部 SMTP 服务,最简单的方法是找到一些简单的 SMTP 服务器并将其安装在本地。或者写一个简单的客户端来代替outlook的角色...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-29
相关资源
最近更新 更多