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