Невозможно использовать smtpclient для отправки почты с сайта localhost iis

StackOverflow https://stackoverflow.com/questions/326853

Вопрос

У меня есть приложение asp.net mvc, работающее на локальном веб-сайте iis, которое не может отправлять почту с помощью SmtpClient из System.Net.Mail.Я пытаюсь отправить письмо на свой адрес горячей почты и получаю исключение сокета.Есть идеи, в чем может быть проблема?

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 на вашем локальном компьютере. Vista не поставляется с SMTP.

Таким образом, вам придется либо установить стороннее SMTP-приложение, которое будет работать в Vista, либо использовать другое приложение для отправки через него, в этом случае ваша учетная запись Hotmail может позволить вам отправлять исходящие через него. Я не использую Hotmail, поэтому не знаю, будет ли он или нет, но это должно быть что-то вроде smtp.hotmail.com и ваши учетные данные. Моя основная учетная запись - учетная запись gmail, поэтому я могу использовать ее через smtp.gmail.com и, конечно же, свои учетные данные.

Другие советы

Для разработки на вашем локальном компьютере вы также можете использовать папку для размещения сообщений:

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

Вместо того, чтобы пытаться настроить SMTP локально, почему бы вам просто не настроить SMTP-соединение для отправки напрямую через горячую почту, просто добавьте элементы конфигурации в файл web.config, чтобы все включить.

Редактировать

Я думаю Эта статья то, что я написал некоторое время назад, может вам помочь.

Попробуйте явно указать хост SmtpClient.

Бывший:
SmtpClient mailClient = новый SmtpClient();

mailClient.Host = "127.0.0.1";

mailClient.Send(сообщение);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top