Как отправить письмо через IIS7? - PullRequest
15 голосов
/ 03 января 2011

Я пытаюсь настроить SMTP-сервер на моем компьютере с Windows 7 в IIS7.Я установил его на «Доставлять почту на локальный хост, порт 25, без аутентификации. Но когда я пытаюсь подключиться программно из моей программы на C #, я получаю сообщение об ошибке:

Ошибка отправки почты», внутреннее исключение«Невозможно установить соединение, потому что целевая машина активно отказалась от него. 127.0.0.1:25

public static void SendEmail(MailMessage m) {
  var smtp = new SmtpClient {
    Host = "localhost",
    Port = 25,
    UseDefaultCredentials = true,
  };
  smtp.Send(m);
}

Почему? Какой еще секретный переключатель мне нужно переключить?

Ответы [ 4 ]

12 голосов
/ 05 января 2011

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

<mailSettings>
  <smtp deliveryMethod="SpecifiedPickupDirectory">
    <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\mails\" />
  </smtp>
</mailSettings>
11 голосов
/ 16 июля 2012

Извините, но большинство из этих ответов были совершенно запутанными и не объясняют проблему. Вот в чем проблема.

«Электронная почта SMTP» в IIS 7 как на Windows 7 Professional, так и на «реальном» веб-сервере, таком как Windows Server 2008, заключается в том, что электронная почта SMTP не является настоящим «виртуальным SMTP-сервером» или тем, что Microsoft называет «простым». Протокол пересылки почты (SMTP) ». Это просто интерфейс, который позволяет вам подключать приложения к SMTP-серверу онлайн. Виртуальный SMTP-сервер, который мы использовали в старых Windows, теперь доступен только как дополнение к серверным операционным системам, используя «Диспетчер серверов» в разделе «Администрирование» и нажимая «Добавить функции». Это не найдено на Windows 7 Professional. Еще одна ошибка Microsoft!

Тем не менее, вы все равно можете использовать часть «SMTP E-mail» в разделе IIs в разработке или даже свой веб-сервер для маршрутизации почты на настоящий SMTP-сервер. Это не похоже на старые времена, когда оба были одинаковыми, и вы могли направлять электронную почту и обратно на локальный ящик и т. Д. Для тестирования. Они позволяют вам хранить это локально, но это не сильно помогает мне. Вот почему, когда в электронной почте SMTP "localhost" не работает. Вот что говорит большинство людей. Для этого вам необходимо установить стороннее программное обеспечение. Лучшее решение - просто получить пакет Windows Server Admin, в котором есть виртуальный сервер и все вкусности веб-сервера, найденные в ОС сервера, и установить его: http://www.sysprobs.com/install-admin-pack-windows-7-remote-desktop-manager

Имейте в виду, вам не нужно запускать ЛЮБОЙ реальный виртуальный SMTP-сервер на локальном компьютере или на сервере, если у вас есть адрес для реальной службы SMTP (например, «mail.yourwebhost.com») , В разделе IIS7 просто щелкните свой элемент электронной почты SMTP в разделе IIS7 и введите адрес. Но "localhost" не будет работать. При использовании электронной почты SMTP с удаленным хостом я обнаружил, что большинству поставщиков SMTP или электронной почты требуются две дополнительные вещи: порт, отличный от «25», и вы добавляете пользовательские учетные данные для аутентификации, найденные в электронной почте SMTP. Network Solutions любит использовать ваш адрес электронной почты для входа и пароль вашего адреса. Я подключил все это, и почтовый объект c # отправил почту без виртуального SMTP-сервера на мой локальный ящик. Последний трюк обязательно добавьте это в ваш код на c #:

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(
        "mail.yourhost.com",155);//add custom port here
//This object stores the authentication values
System.Net.NetworkCredential mycredentials = new System.Net.NetworkCredential(
        "yourname@yourdomain.com", "passwordhere");
client.UseDefaultCredentials = false;
client.Credentials = mycredentials;
5 голосов
/ 05 января 2011

Лучший метод, который я нашел, это использовать SMTP4Dev , который прослушивает электронные письма и показывает, что было «отправлено», но на самом деле ничего не отправляет.Отлично подходит для тестирования!

3 голосов
/ 03 января 2011

Вам необходимо настроить SMTP-сервер в IIS7, здесь приведены инструкции по настройке:

http://learn.iis.net/page.aspx/751/configure-smtp-e-mail-in-iis-7/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...