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

Sha*_*ica 15 c# iis-7 smtp

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

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

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

为什么?我需要翻转什么其他秘密开关?

Ant*_*ula 12

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

<mailSettings>
  <smtp deliveryMethod="SpecifiedPickupDirectory">
    <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\mails\" />
  </smtp>
</mailSettings>
Run Code Online (Sandbox Code Playgroud)


小智 11

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

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

但是,您仍然可以使用开发中的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电子邮件下找到的自定义身份验证凭据.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;
Run Code Online (Sandbox Code Playgroud)


Sha*_*ica 5

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