我在本地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,请验证\ $是否具有对物理路径的读取权限。然后再次测试这些设置。
答案 0 :(得分:3)
根据您对Joe上方评论的回答,您没有在本地计算机上启用SMTP。 Vista不附带SMTP。
因此,您要么必须安装将在Vista上运行的第三方SMTP应用程序,要么使用其他应用程序进行发送,在这种情况下,您的Hotmail帐户可能允许您通过它发送传出。我不使用Hotmail所以不知道它是否会,但它应该像smtp.hotmail.com和你的凭据。我的主要帐户是一个Gmail帐户,所以我可以通过smtp.gmail.com使用它,当然还有我的凭据。
答案 1 :(得分:2)
要在本地计算机上进行开发,您还可以使用drop文件夹:
http://www.codersbarn.com/post/2008/11/30/ASPNET-Contact-Form.aspx
答案 2 :(得分:0)
您不必尝试在本地设置SMTP,为什么不将SMTP连接配置为直接通过hotmail发送,只需将配置元素添加到web.config即可启用所有内容。
修改强>
我认为我曾经写过的this article可能会帮助你。
答案 3 :(得分:-1)
尝试明确设置SmtpClient的主机。
例如:
SmtpClient mailClient = new SmtpClient();
mailClient.Host =“127.0.0.1”;
mailClient.Send(消息);