如何在Vista上设置smtp以便我可以使用System.Net.Mail?

时间:2009-03-31 16:27:44

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

根据我的理解,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超时。

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

谢谢!

4 个答案:

答案 0 :(得分:9)

如您所知,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文件,但我记不住了。

答案 1 :(得分:0)

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

  

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

答案 2 :(得分:0)

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

我最近不得不这样做。

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

使用“SendCompleted”事件,您可以在后台发送电子邮件而不会延迟应用程序。

答案 3 :(得分:0)

@JoshBerke

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

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