【问题标题】:How do I set up smtp on Vista so I can use System.Net.Mail?如何在 Vista 上设置 smtp 以便可以使用 System.Net.Mail?
【发布时间】:2010-10-16 15:47:12
【问题描述】:

据我了解,Vista 上的 IIS 中没有 SMTP 服务器。我正在做一个需要我发送电子邮件的项目。我想从运行 Vista Ultimate 的开发盒上的一些简单原型开始。我没有连接到可以在某个地方使用交换服务器的公司网络。

我知道我可以安装几台 smtp 服务器,但我不知道安装后该怎么做。我知道如何编写发送电子邮件的代码,但我不知道需要做什么样的配置才能使用 smtp 服务器。

我想要一个清楚的说明,一旦我在我的 Vista 机器上安装了 smtp 服务器后该做什么。

谢谢!

更新:我下载了这个 smtp 服务器:http://softstack.com/freesmtp.html

我的代码如下所示:

class Program
{
    static void Main(string[] args)
    {
        MailMessage message = new MailMessage();    
        message.From = new MailAddress("tad@myconsoleapp.com");    
        message.To.Add(new MailAddress("terry.donaghe@gmail.com"));               
        //message.To.Add(new MailAddress("recipient3@foo.bar.com"));    
        //message.CC.Add(new MailAddress("carboncopy@foo.bar.com"));    
        message.Subject = "This is my subject";    
        message.Body = "This is the content";    
        SmtpClient client = new SmtpClient("localhost");    
        client.Send(message);    
        Console.ReadLine();     
    }
}

当我运行这个 smtp 服务器并执行我的控制台应用程序时,它会处理 client.send 行。 smtp 服务器如下所示:

http://screencast.com/t/2B7jv0bE14

一段时间后,client.send 超时。

任何想法现在出了什么问题?

谢谢!

【问题讨论】:

    标签: c# .net email windows-vista smtp


    【解决方案1】:

    如您所知,SMTP 不再随 Vista 一起提供(这是我对 Vista 最大的抱怨之一)。正如您已经知道的那样,那里有很多选择,如果您找到一个不错的免费选项,请发布指向它的链接。您如何配置它可能取决于您安装的服务器。

    我使用了一些试用 smtp 服务器,我使用的所有服务器都开始在环回 IP 地址上的标准 SMTP 端口上侦听。我相信这是默认的 MailSettings,不需要任何更改。

    我不再有任何 SMTP 服务器,并且正在使用分拣目录模式。这会导致邮件库输出一个文件,然后我可以检查该文件。

    要对此进行配置,请在配置文件中使用以下内容:

    <system.net>
        <mailSettings>
            <smtp deliveryMethod="SpecifiedPickupDirectory">
                <specifiedPickupDirectory
                  pickupDirectoryLocation="c:\maildrop"/>
            </smtp>
        </mailSettings>
    </system.net>
    

    如果您想将其配置为连接到本地主机上的 25 端口,您可以在 SMTP 部分这样做:

    <smtp deliveryMethod="Network">
       <network defaultCredentials="true" host="localhost" port="25"/>
    </smtp>
    

    编辑

    特里问了一个关于使用放置位置的好问题。我只将它用于测试,因为我们的生产服务器有一个我连接到的 SMTP 服务器,并通过它发送电子邮件;但是,可以将一些 SMTP 服务器配置为监视目录,并从中提取和邮寄任何内容。

    我不认为此功能仅用于测试,但效果很好。生成的文件可以在各种邮件客户端中打开,这样您就可以看到它们将如何呈现它们。我相信他们是 .eml 文件,但我不记得了。

    【讨论】:

    • 所以这种技术不会发送电子邮件,对吧?它只是用于测试吗?
    【解决方案2】:

    您可以在stickymailserver 中找到一个编码为C# .NET 的非常基本的SMTP 服务器:

    Sticky Mail Server 是一种低交互 SMTP 蜜罐,旨在模拟开放式 SMTP 中继。它捕获并记录探测消息和群发邮件,并保存它们以供日后分析。

    【讨论】:

      【解决方案3】:

      您可以使用外部托管的 SMTP 服务器。我发现如果原始 SMTP 服务器位于动态 IP 地址后面(如大多数住宅系统),许多电子邮件系统将阻止访问。

      我最近不得不这样做。

       SmtpClient smtp = new SmtpClient("smtp.myserver.com");
       smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
       smtp.Credentials = new System.Net.NetworkCredential("Username", "Password");
      

      使用“SendCompleted”事件,可以在后台发送邮件,不会耽误申请。

      【讨论】:

        【解决方案4】:

        @乔什伯克

        我已尝试使用以下选项,但收到“无法获取 IIS 拾取目录”。我知道我指向一个现有目录,是否需要在该目录上设置权限?

        <smtp deliveryMethod="SpecifiedPickupDirectory">
             <specifiedPickupDirectory pickupDirectoryLocation="c:\maildrop"/>
        </smtp>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-21
          • 2010-09-08
          • 2023-03-05
          • 2021-10-23
          • 1970-01-01
          • 2013-05-15
          • 2010-12-04
          • 1970-01-01
          相关资源
          最近更新 更多