4

我有一个在本地 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,请验证 \$ 是否具有对物理路径的读取访问权限。然后再次测试这些设置。

4

4 回答 4

3

根据您对我在 Joe 上面的评论的回答,您的本地计算机上没有启用 SMTP。Vista 不附带 SMTP。

因此,您要么必须安装将在 Vista 上运行的第 3 方 SMTP 应用程序,要么使用其他应用程序发送邮件,在这种情况下,您的 Hotmail 帐户可能允许您通过它发送邮件。我不使用 Hotmail,所以不知道它是否会,但它应该类似于 smtp.hotmail.com 和您的凭据。我的主要帐户是 gmail 帐户,因此我可以通过 smtp.gmail.com 使用它,当然还有我的凭据。

于 2008-11-29T00:42:45.257 回答
2

对于本地计算机上的开发,您还可以使用放置文件夹:

http://www.codersbarn.com/post/2008/11/30/ASPNET-Contact-Form.aspx

于 2008-12-01T02:04:05.107 回答
0

与其尝试在本地设置 SMTP,不如将 SMTP 连接配置为直接通过 hotmail 发送,只需将配置元素添加到 web.config 以启用所有内容。

编辑

我认为我前一段时间写的这篇文章可能会对您有所帮助。

于 2008-11-29T00:27:23.370 回答
-1

尝试显式设置 SmtpClient 的主机。

例如:
SmtpClient mailClient = new SmtpClient();

mailClient.Host = "127.0.0.1";

mailClient.Send(消息);

于 2008-12-01T15:43:18.450 回答