Cannot use smtpclient to send mail with localhost iis site

I have an asp.net mvc app running on a local iis website that is failing to send mail using SmtpClient from System.Net.Mail. I am trying to send a mail to my hotmail address and I get a socket exception. Any idea what the problem might be?

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);
            }

Here is the exception:

{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)}

I think the default app pool does not have access to intepub\wwwroot. Here is the error that I get when trying to test the connection:

The server is configured to use pass-through authentication with a built-in account to access the specified physical path. However, IIS Manager cannot verify whether the built-in account has access. Make sure that the application pool identity has Read access to the physical path. If this server is joined to a domain, and the application pool identity is NetworkService or LocalSystem, verify that \$ has Read access to the physical path. Then test these settings again.

Answers


Based on your answers to my comments above Joe, you don't have SMTP enabled on your local machine. Vista does not come with SMTP.

As such, you'll either have to install a 3rd party SMTP app that will run on Vista, or use another app to send via, in this case, your Hotmail account may allow you to send outgoing via it. I don't use Hotmail so don't know if it will or not but it should be something like smtp.hotmail.com and your credentials. My primary account is a gmail account, so I can use it via smtp.gmail.com and of course, my credentials.


For development on your local machine, you can also use a drop folder:

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


Rather than trying to setup SMTP locally, why don't you just configure the SMTP connection to send directly via hotmail, just add the configuration elements to the web.config to enable everything.

Edit

I think this article that I wrote a while back might help you out.


Try explicitly setting the host of the SmtpClient.

Ex: SmtpClient mailClient = new SmtpClient();

mailClient.Host = "127.0.0.1";

mailClient.Send(message);


Need Your Help

UIImageWriteToSavedPhotosAlbum with UIImageView in iOS 9

ios swift uiimageview uiimage swift2

I'm trying to develop a "Save image" feature in my App, where users can save the image from a TableView in their photo library. I have searched a lot through the community and I couldn't find anyth...

Git remove only push last local commit

git git-reset

I have made a bunch of changes on my local git version of a Rails project that I don't want to lose, however in doing so, I accidentally created a vendor/bundle folder in Git.