Ответ 1
Лучший метод, который я нашел, заключался в использовании SMTP4Dev, который прослушивает электронные письма и показывает вам, что было "отправлено", Фактически отправляйте что-нибудь. Отлично подходит для тестирования!
Я пытаюсь настроить SMTP-сервер на моей машине с Windows 7 в IIS7. Я установил его для "отправки электронной почты на localhost, порт 25, без проверки подлинности. Но когда я пытаюсь подключиться программно из моей программы на С#, я получаю сообщение об ошибке:
Отказ отправки почты ", внутреннее исключение" Никакое соединение не может быть сделано, потому что целевая машина активно отказалась от него 127.0.0.1:25
public static void SendEmail(MailMessage m) {
var smtp = new SmtpClient {
Host = "localhost",
Port = 25,
UseDefaultCredentials = true,
};
smtp.Send(m);
}
Почему? Какой еще секретный переключатель мне нужно перевернуть?
Лучший метод, который я нашел, заключался в использовании SMTP4Dev, который прослушивает электронные письма и показывает вам, что было "отправлено", Фактически отправляйте что-нибудь. Отлично подходит для тестирования!
В целях разработки я использую хранение писем в файловой системе, попробуйте это в web.config
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="c:\temp\mails\" />
</smtp>
</mailSettings>
Извините, но большинство из этих ответов были совершенно запутанными и не объясняли проблему. Вот в чем проблема.
"SMTP-E-mail" в IIS 7, как на Windows 7 Professional, так и на "реальном" веб-сервере, таком как Windows Server 2008, заключается в том, что электронная почта SMTP не является истинным "виртуальным SMTP-сервером" или тем, что Microsoft называет "простой Протокол передачи почты (SMTP)". Это просто интерфейс, который позволяет вам использовать приложения для SMTP-сервера в Интернете. Виртуальный SMTP-сервер, который мы использовали для старых Windows, теперь доступен только как надстройка на серверных операционных системах, используя "Менеджер сервера" в разделе "Администрирование" и нажав "добавить функции". Thats not found on say Windows 7 Professional. Еще одна ошибка Microsoft!
Тем не менее, вы все равно можете использовать часть "SMTP E-mail" в разделе "Разработка приложений" или даже ваш веб-сервер для маршрутизации почты на настоящий SMTP-сервер. Это не похоже на старые времена, когда оба были одинаковыми, и вы могли направлять электронную почту и обратно в свою локальную коробку и т.д. Для тестирования. Они позволяют вам хранить это локально, но это не очень помогает мне. Вот почему, когда в SMTP E-mail "localhost" не работает. Это то, что говорят большинство людей. Для этого вам потребуется установить стороннее программное обеспечение. Лучшее решение - просто получить пакет администрирования Windows Server с виртуальным сервером и всеми преимуществами веб-сервера, найденными на ОС сервера, и установить следующее: http://www.sysprobs.com/install-admin-pack-windows-7-remote-desktop-manager
Имейте в виду, что вам не нужно запускать настоящий виртуальный SMTP-сервер в локальном или на сервере, если у вас есть адрес реальной службы SMTP (например, "mail.yourwebhost.com" ), В разделе IIS7 просто нажмите на ссылку SMTP E-mail в разделе IIS7 и введите адрес. Но "localhost" не будет. Если вы используете SMTP-адрес электронной почты с удаленным хостом, я обнаружил, что большинство поставщиков SMTP или электронной почты требуют две дополнительные вещи: порт, отличный от "25", и вы добавляете собственные учетные данные аутентификации, найденные в SMTP-E-mail. Network Solutions любит использовать ваш адрес электронной почты для входа и пароля вашего адреса. Я подключил все это, а почтовый объект С# отправил почту без виртуального SMTP-сервера в моем локальном поле. Последний трюк также обязательно добавьте это в свой код С#:
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(
"[email protected]", "passwordhere");
client.UseDefaultCredentials = false;
client.Credentials = mycredentials;
Вам нужно настроить SMTP-сервер в IIS7, вот инструкции по настройке:
http://learn.iis.net/page.aspx/751/configure-smtp-e-mail-in-iis-7/