根据我的理解,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超时。
任何想法现在出了什么问题?
谢谢!
答案 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>