Как настроить SMTP на Vista, чтобы я мог использовать System.Net.Mail? - PullRequest
8 голосов
/ 31 марта 2009

Насколько я понимаю, в IIS на Vista нет SMTP-сервера. Я работаю над проектом, который потребует от меня отправки электронной почты. Я хотел бы начать с нескольких простых прототипов на моей машине для разработки под управлением Vista Ultimate. Я не подключен к корпоративной сети, где я могу просто где-нибудь использовать сервер обмена.

Я понимаю, что есть несколько SMTP-серверов, которые я могу установить, но я не уверен, что делать после установки одного. Я знаю, как написать код для отправки электронного письма, но я не знаю, какую настройку необходимо выполнить для использования сервера smtp.

Что мне нужно, так это четкое описание того, что делать, когда я установил smtp-сервер на моем компьютере Vista.

Спасибо!

ОБНОВЛЕНИЕ: Я скачал этот SMTP-сервер: http://softstack.com/freesmtp.html

Вот как выглядит мой код:

class Program
{
    static void Main(string[] args)
    {
        MailMessage message = new MailMessage();    
        message.From = new MailAddress("tad@myconsoleapp.com");    
        message.To.Add(new MailAddress("terry.donaghe@gmail.com"));               
        //message.To.Add(new MailAddress("recipient3@foo.bar.com"));    
        //message.CC.Add(new MailAddress("carboncopy@foo.bar.com"));    
        message.Subject = "This is my subject";    
        message.Body = "This is the content";    
        SmtpClient client = new SmtpClient("localhost");    
        client.Send(message);    
        Console.ReadLine();     
    }
}

Когда у меня запущен этот SMTP-сервер и я запускаю консольное приложение, оно передает строку client.send. SMTP-сервер выглядит так:

http://screencast.com/t/2B7jv0bE14

Через некоторое время истекает время ожидания client.send.

Есть идеи, что происходит сейчас?

Спасибо!

Ответы [ 4 ]

9 голосов
/ 31 марта 2009

Как вы знаете, SMTP больше не поставляется с Vista (что является одной из моих самых больших претензий к Vista). Как вы уже знаете, есть много вариантов, и если вы нашли хороший бесплатный, отправьте ссылку на него. Способ ее настройки, вероятно, будет зависеть от сервера, который вы устанавливаете.

Я играл с некоторыми пробными серверами smtp, и все те, которые я использовал, начали прослушивать стандартные порты SMTP на IP-адресе обратной связи. Я считаю, что это MailSettings по умолчанию, и не должно требовать каких-либо изменений.

У меня больше нет SMTP-сервера, и я использую режим каталога раскладки. Это заставляет почтовую библиотеку выводить файл, который я затем могу проверить.

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

<system.net>
    <mailSettings>
        <smtp deliveryMethod="SpecifiedPickupDirectory">
            <specifiedPickupDirectory
              pickupDirectoryLocation="c:\maildrop"/>
        </smtp>
    </mailSettings>
</system.net>

Если вы хотите настроить его для подключения к порту 25 на локальном хосте, вы должны сделать это для раздела SMTP:

<smtp deliveryMethod="Network">
   <network defaultCredentials="true" host="localhost" port="25"/>
</smtp>

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

Терри задал хороший вопрос об использовании места сброса. Я использую это только для тестирования, так как наш производственный сервер имеет SMTP-сервер, к которому я подключаюсь, и отправляю электронную почту; однако некоторые SMTP-серверы могут быть настроены на просмотр каталога и будут получать и отправлять по почте все, что находится там.

Не думаю, что эта функция предназначалась для использования только для тестирования, но она прекрасно работает. Сгенерированные файлы могут быть открыты в различных почтовых клиентах, чтобы вы могли видеть, как они будут отображаться. Я верю, что они. EML файлы, но я не могу вспомнить.

0 голосов
/ 10 августа 2010

@ JoshBerke

Я попытался использовать приведенную ниже опцию, но получил «Не удается получить каталог раскладки IIS». Я знаю, что я указываю на существующий каталог, есть ли разрешения, которые мне нужно настроить для каталога?

<smtp deliveryMethod="SpecifiedPickupDirectory">
     <specifiedPickupDirectory pickupDirectoryLocation="c:\maildrop"/>
</smtp>
0 голосов
/ 01 апреля 2009

Вы можете использовать внешний SMTP-сервер. Я обнаружил, что многие почтовые системы блокируют доступ, если исходный SMTP-сервер находится за динамическим IP-адресом (как и большинство жилых систем).

Я должен был сделать это недавно.

 SmtpClient smtp = new SmtpClient("smtp.myserver.com");
 smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
 smtp.Credentials = new System.Net.NetworkCredential("Username", "Password");

Используя событие «SendCompleted», вы можете отправлять электронную почту в фоновом режиме, не задерживая приложение.

0 голосов
/ 31 марта 2009

Вы можете найти очень простой SMTP-сервер, закодированный в C# .NET в stickymailserver :

Sticky Mail Server - это SMTP Honeypot с низким уровнем взаимодействия, разработанный для эмуляции открытого SMTP-ретранслятора. Он регистрирует и регистрирует сообщения о пробах и массовые рассылки и сохраняет их для последующего анализа.

...