使用localhost SMTP发送邮件

我正在尝试在IIS上设置SMTP服务器以发送邮件。 SMTP服务器旨在由C#中的ASP.NET代码使用。

我之前使用的是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); 

现在我打算在IIS上使用localhost SMTP服务器, 我应该为参数UseDefaultCredentials和Credentials提供什么值。 我将通过端口25向EnableSsl分配false。

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

我认为在localhost中你可以使用:

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

使用本地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; 

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

你试过启用继电器吗?

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

然后你可以选择全部或只允许某些ip,如127.0.0.1

SMTP中继

Tx Natim,你说的对我有用。 现在让我们的内部网应用程序使用集成的auth与我们的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) 

如果您想在localhost中测试电子邮件,只需下载安装剪纸工具https://papercut.codeplex.com/

并将主机名更改为localhost,如下所示。 Papercut捕获使用localhost发送的所有电子邮件。

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