2009-10-13 126 views
21

我想在IIS上设置SMTP服务器发送邮件。 SMTP服务器旨在供C#中的ASP.NET代码使用。发送邮件使用本地主机SMTP

我以前使用gmail smtp,其中我提供了smtp.gmail.com作为主机与安全端口和我的gmail uid/pwd。这工作得很好。这是用来做这件事的代码。

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.UseDefaultCredentials = false; 
smtpClient.Host = "smtp.gmail.com"; 
smtpClient.Port = 587; 
smtpClient.Credentials = new NetworkCredential(uname,pwd); 
smtpClient.EnableSsl = true; 
smtpClient.Send(mailMessage); 

现在我打算使用本地主机SMTP服务器上IIS,什么价值,我应该给的参数UseDefaultCredentials和证书。我将为EnableSsl分配false,因为它通过端口25.

另外,什么可能是最简单的SMTP虚拟服务器配置。

回答

14

我想在本地主机可以使用:

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.UseDefaultCredentials = true; 
smtpClient.Send(mailMessage); 
+0

它不起作用。我收到错误“未知的SMTP主机” – lenden 2014-10-08 11:04:14

+0

您是否启动IIS SMTP服务? – Natim 2014-10-08 16:06:51

+0

是的,但它仍然不起作用(我有win8,但据我了解,我激活了一切正确)。我应该写“smtp deliveryMethod =”Network“from =”...“>”to web config?它仍然是“未知的smtp主机”,如果我只写这3行 – lenden 2014-10-10 00:03:04

3

这取决于你如何配置smtp服务器。您可能根本不需要使用任何凭据,只需将服务器配置为仅接受本地连接即可。

+0

@Joel: 我的SMTP服务器设置: 验证:匿名访问 IP地址:所有未分配的 出站安全:匿名访问 好奇,如果这是发送邮件没有凭据的正确的配置。 – pencilslate 2009-10-13 03:07:16

+0

这是serverfault的问题。 – 2009-10-13 03:52:53

26

当您使用本地IIS SMTP服务,设置DeliveryMethod到PickupDirectoryFromIis。例如:

smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 

这完全绕过网络层,并将消息直接写入磁盘。它比通过聊天的SMTP协议快得多。

当你使用上面的代码,这意味着你可以摆脱你的代码,这部分:

smtpClient.UseDefaultCredentials = false; 
smtpClient.Host = "smtp.gmail.com"; 
smtpClient.Port = 587; 
smtpClient.Credentials = new NetworkCredential(uname,pwd); 
smtpClient.EnableSsl = true; 
+4

这是使用本地IIS拾取目录的正确答案。由于它只是写入一个文件,因此它不会使用任何凭据,IIS只会为您发送它。 – 2009-10-13 21:23:04

1

的Tx Natim,你说什么为我工作。有我们的内部网应用程序中使用集成的身份验证与我们现在Exchange 2007服务器:

Dim msg As New MailMessage() 
Dim smtp As SmtpClient 

msg.From = New MailAddress(strFrom) 
msg.To.Add(strTo) 
msg.Subject = strSubject 
msg.Body = strBody 

smtp = New SmtpClient("ServerName") 
smtp.UseDefaultCredentials = True 
smtp.Send(msg) 
2

你试过使继电器?

找到IIS6管理器(我发现搜索IIS可能会返回2个结果)转到SMTP服务器属性,然后'访问',然后按继电器按钮。

然后你可以选择全部或只允许某些IP的像127.0.0.1

SMTP Relay

+0

我正在使用CDOSYS,并从服务器设置此虚拟服务器电子邮件发送顺利,但是当我从工作站尝试我的实用工具'传输失败连接到服务器'消息。任何想法?我需要在代码中进行更改,以便工作站也能够使用此虚拟SMTP服务器并发送电子邮件。 – elmo 2016-09-23 10:11:17

0

如果你想测试在本地主机的邮件,只要下载安装剪纸工具https://papercut.codeplex.com/

和变化主机名到localhost如下。 Papercut捕获使用本地主机发送的所有电子邮件。

smtpClient.UseDefaultCredentials = false; 
    smtpClient.Host = "localhost"; 
    smtpClient.Port = 587; 
    smtpClient.Credentials = new NetworkCredential(uname,pwd); 
    smtpClient.EnableSsl = true; 
+0

也smtp4dev是一个本地smtp服务器的开发人员。 – Birey 2017-11-28 18:28:57