如何通过IIS7发送电子邮件?

我正在尝试在IIS7中的Windows 7计算机上设置SMTP服务器。 我已将其设置为“将电子邮件发送到localhost,端口25,无需身份validation。但是当我尝试以编程方式从我的C#程序连接时,出现错误:

发送邮件失败“,内部exception”无法建立连接,因为目标计算机主动拒绝它127.0.0.1:25

public static void SendEmail(MailMessage m) { var smtp = new SmtpClient { Host = "localhost", Port = 25, UseDefaultCredentials = true, }; smtp.Send(m); } 

为什么? 还有什么其他秘密开关可以翻转?

出于开发目的,我使用存储邮件到文件系统,在web.config中尝试

      

对不起,但大多数这些答案都令人困惑,并没有解释问题。 这是问题所在。

IIS 7中的“SMTP电子邮件”,在Windows 7 Professional和“真实”Web服务器(如Windows Server 2008)上都是SMTP电子邮件不是真正的“虚拟SMTP服务器”或Microsoft称之为“简单邮件传输协议” (SMTP)”。 它只是一个界面,允许您连接到SMTP服务器的应用程序。 我们以前在旧Windows上使用的虚拟SMTP服务器现在只能作为服务器操作系统上的附件使用“管理工具”下的“服务器管理器”并单击“添加function”。 据说Windows 7专业版没有找到。 另一个微软的错误!

但是,您仍然可以使用开发中的IIs下的“SMTP电子邮件”片段甚至是Web服务器将邮件路由到真正的SMTP服务器。 它不像以前两者都是一样的,你可以将电子邮件发送回本地盒子等进行测试。 他们让你在当地存储,但这对我没什么帮助。 这就是为什么在SMTP电子邮件中“localhost”不起作用的原因。 这就是大多数人所说的。 为此,您需要安装第三方软件。 一个更好的解决方案是获取Windows Server Admin包,其中包含虚拟服务器和服务器操作系统上的所有Web服务器商品,并安装: http : //www.sysprobs.com/install-admin-pack-windows- 7远程桌面管理器

请记住,只要您拥有真实SMTP服务的地址(例如“mail.yourwebhost.com”),就不必在本地机器或服务器上运行任何真正的SMTP虚拟服务器。 在IIS7下,只需单击IIS7下的SMTP电子邮件,然后键入地址。 但是“localhost”不会有任何问题。 使用远程主机的Usng SMTP电子邮件,我发现大多数SMTP或电子邮件提供商都需要两个额外的东西:“25”以外的端口,并添加在SMTP电子邮件下找到的自定义身份validation凭据。 Network Solutions喜欢使用您的电子邮件地址登录和您的地址密码。 我搞砸了所有这一切,邮件c#对象在我的本地盒子上发送了没有虚拟SMTP服务器的邮件。 最后一招是确保将此添加到您的c#代码中:

 System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient( "mail.yourhost.com",155);//add custom port here //This object stores the authentication values System.Net.NetworkCredential mycredentials = new System.Net.NetworkCredential( "yourname@yourdomain.com", "passwordhere"); client.UseDefaultCredentials = false; client.Credentials = mycredentials; 

我找到的最好的方法是使用SMTP4Dev来监听电子邮件,并向您显示“已发送”的内容,但实际上并未发送任何内容。 非常适合测试!

您需要在IIS7中设置SMTP服务器,以下是如何设置的说明:

http://learn.iis.net/page.aspx/751/configure-smtp-e-mail-in-iis-7/