Asp.net mvc 无法使用smtpclient与localhost iis站点一起发送邮件
我有一个asp.net mvc应用程序在本地iis网站上运行,无法从System.net.mail使用SmtpClient发送邮件。我正在尝试向我的hotmail地址发送邮件,但收到套接字异常。知道问题出在哪里吗Asp.net mvc 无法使用smtpclient与localhost iis站点一起发送邮件,asp.net-mvc,sockets,system.net.mail,Asp.net Mvc,Sockets,System.net.mail,我有一个asp.net mvc应用程序在本地iis网站上运行,无法从System.net.mail使用SmtpClient发送邮件。我正在尝试向我的hotmail地址发送邮件,但收到套接字异常。知道问题出在哪里吗 using(var message = new MailMessage()) { message.From = new MailAddress(AdminEmail); message.To.Add
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,不如将SMTP连接配置为直接通过hotmail发送,只需将配置元素添加到web.config即可启用所有功能 编辑
我想我不久前写的可能会帮到你。根据你对我在Joe上面的评论的回答,你没有在本地计算机上启用SMTP。Vista不附带SMTP
因此,您必须安装一个将在Vista上运行的第三方SMTP应用程序,或者使用另一个应用程序通过发送,在这种情况下,您的Hotmail帐户可能允许您通过它发送邮件。我不使用Hotmail,所以不知道它是否会使用,但它应该类似于smtp.Hotmail.com和您的凭据。我的主帐户是gmail帐户,因此我可以通过smtp.gmail.com使用它,当然还有我的凭据。要在本地计算机上开发,您还可以使用drop文件夹:
尝试显式设置SmtpClient的主机 例如:
SmtpClient mailClient=新的SmtpClient() mailClient.Host=“127.0.0.1”
mailClient.Send(message) 您的本地主机上是否运行smtp服务器?我想这是我的问题的一部分。我打开了IIS管理器并将SMTP服务器设置为localhost,但它仍然无法工作。还有什么需要配置的吗?您可以远程登录到本地机器上的端口25吗?你在运行什么操作系统?您在本地计算机上有防火墙吗?我正在运行vista home premium。我有一个防火墙,但这是否重要,因为连接是传出的?另外,我不知道如何开始使用telnet。我想我现在明白了。我已在IIS中将SMTP服务器指定为localhost,因此我的Web应用程序将向localhost上的STMP应用程序发送邮件,并在其中进行中继。但我需要先设置一个应用程序来实现这一点。听起来对吗?@Joe-您可以在声明SMTP客户端时指定凭据,也可以使用web.config部分。添加了一个帖子链接。我在使用gmail作为网关时遇到了一些问题。您必须在代码中执行多次重试。他已经成功地连接到本地主机,只是没有被接受。