我正在尝试在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。 / p>
此外,可能是最简单的SMTP虚拟服务器配置。
答案 0 :(得分:27)
使用本地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;
答案 1 :(得分:15)
我认为在localhost中你可以使用:
SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = true;
smtpClient.Send(mailMessage);
答案 2 :(得分:3)
这取决于您配置smtp服务器的方式。您可能根本不需要使用任何凭据,只需将服务器配置为仅接受本地连接。
答案 3 :(得分:2)
您是否尝试过启用继电器?
查找IIS6管理器(我发现搜索IIS可能会返回2个结果)转到SMTP服务器属性然后“访问”#39;然后按下继电器按钮。
然后你可以选择全部或只允许某些ip,如127.0.0.1
答案 4 :(得分:1)
Tx Natim,你说的对我有用。现在让我们的Intranet应用程序使用集成的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)
答案 5 :(得分:0)
如果您想在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;