使用localhost SMTP发送邮件

时间:2009-10-13 02:51:47

标签: c# iis-6 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。 / p>

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

6 个答案:

答案 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

SMTP Relay

答案 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;