Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 无法使用smtpclient与localhost iis站点一起发送邮件_Asp.net Mvc_Sockets_System.net.mail - Fatal编程技术网

Asp.net mvc 无法使用smtpclient与localhost iis站点一起发送邮件

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

我有一个asp.net mvc应用程序在本地iis网站上运行,无法从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,不如将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作为网关时遇到了一些问题。您必须在代码中执行多次重试。他已经成功地连接到本地主机,只是没有被接受。