【问题标题】:How to send email through IIS7?如何通过 IIS7 发送电子邮件?
【发布时间】:2011-06-02 21:02:51
【问题描述】:

我正在尝试在 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);
}

为什么?我还需要打开什么其他秘密开关?

【问题讨论】:

  • 您需要设置一个 SMTP 服务器。似乎您已更改 IIS 用于发送邮件而不是接收邮件的服务器信息。
  • @svinto - 怎么样? (如果这是答案,请将其作为答案,而不是评论)
  • @Pauli - 嗯,显然不是:stackoverflow.com/questions/1120132/… 看起来我必须安装第 3 方 SMTP 服务器!太离谱了!
  • 为什么会如此离谱?
  • 如果 Windows 7 足以安装 IIS7,那么为什么 MS 不能同时包含标准 SMTP 服务器呢?

标签: c# iis-7 smtp


【解决方案1】:

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

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

【讨论】:

  • 谢谢,但我有 Windows 7 - 没有“服务器管理器”
  • 对不起,没有意识到它是 Windows 7。Windows 7 上不支持 SMTP,您可以为此安装一些第三方应用程序,请参阅此链接:serverfault.com/questions/64753/smtp-server-on-windows-7
  • 感谢 ServerFault 的链接——值得 +1
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\mails\" />
      </smtp>
    </mailSettings>
    

    【讨论】:

    • 这是一个很好的解决方案。强烈建议为开发人员走这条路线。
    【解决方案4】:

    抱歉,这些答案中的大多数完全令人困惑,并没有解释问题所在。这就是问题所在。

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

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

    请记住,您不必在本地机器或服务器上运行任何真正的 SMTP 虚拟服务器,只要您有一个真正的 SMTP 服务的地址(例如“mail.yourwebhost.com”) .在 IIS7 下,只需单击 IIS7 下的 SMTP 电子邮件,然后输入地址。但是“本地主机”不起作用。使用远程主机使用 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 2014-05-23
      相关资源
      最近更新 更多