2009-03-31 2 views
8

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

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

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

Спасибо!

UPDATE: Я скачал этот SMTP-сервер: http://softstack.com/freesmtp.html

Вот что мой код выглядит следующим образом:

class Program 
{ 
    static void Main(string[] args) 
    { 
     MailMessage message = new MailMessage();  
     message.From = new MailAddress("[email protected]");  
     message.To.Add(new MailAddress("[email protected]"));    
     //message.To.Add(new MailAddress("[email protected]"));  
     //message.CC.Add(new MailAddress("[email protected]"));  
     message.Subject = "This is my subject";  
     message.Body = "This is the content";  
     SmtpClient client = new SmtpClient("localhost");  
     client.Send(message);  
     Console.ReadLine();  
    } 
} 

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

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

Через некоторое время времени client.send вне.

Любые идеи, что происходит сейчас?

Спасибо!

ответ

9

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

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

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

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

<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

Так что эта техника не отправляет электронную почту, верно? Он просто используется для тестирования? –

+0

спасибо :-) Я все еще люблю это решение – JoshBerke

0

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

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

0

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

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

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

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

0

@JoshBerke

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

<smtp deliveryMethod="SpecifiedPickupDirectory"> 
    <specifiedPickupDirectory pickupDirectoryLocation="c:\maildrop"/> 
</smtp> 
Смежные вопросы