【发布时间】:2008-11-28 22:52:55
【问题描述】:
我有一个在本地 iis 网站上运行的 asp.net mvc 应用程序无法使用 System.Net.Mail 中的 SmtpClient 发送邮件。我正在尝试向我的 hotmail 地址发送邮件,但出现套接字异常。知道可能是什么问题吗?
using(var message = new MailMessage())
{
message.From = new MailAddress(AdminEmail);
message.To.Add(new MailAddress(to));
message.Subject = subject;
message.Body = body;
message.IsBodyHtml = false;
var mailClient = new SmtpClient();
mailClient.Send(message);
}
这是一个例外:
{System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:25
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)}
我认为默认应用程序池无权访问 intepub\wwwroot。这是我在尝试测试连接时遇到的错误:
服务器配置为使用带有内置帐户的直通身份验证来访问指定的物理路径。但是,IIS 管理器无法验证内置帐户是否具有访问权限。确保应用程序池标识对物理路径具有读取权限。如果此服务器已加入域,并且应用程序池标识为 NetworkService 或 LocalSystem,请验证 \$ 是否具有对物理路径的读取访问权限。然后再次测试这些设置。
【问题讨论】:
-
您的本地主机上是否运行了 smtp 服务器?
-
我认为这是我的问题的一部分。我打开 IIS 管理器并将 SMTP 服务器设置为 localhost,但它仍然无法正常工作。还有什么需要配置的吗?
-
你能telnet到你本地机器上的25端口吗?你在运行什么操作系统?你在本地机器上有防火墙吗?
-
我正在运行 vista home premium。我确实有防火墙,但由于连接是传出的,这有关系吗?另外,我不确定如何开始使用 telnet。
标签: asp.net-mvc sockets system.net.mail