2009-03-31 11 views
8

Por lo que entiendo, no hay servidor SMTP en IIS en Vista. Estoy trabajando en un proyecto que me pedirá que envíe un correo electrónico. Me gustaría comenzar con algunos prototipos simples en mi caja de desarrollo que ejecuta Vista Ultimate. No estoy conectado a una red corporativa donde puedo usar un servidor de intercambio en algún lugar.¿Cómo configuro smtp en Vista para que pueda usar System.Net.Mail?

Me doy cuenta de que hay varios servidores smtp que puedo instalar, pero no estoy seguro de qué hacer una vez que instalo uno. Sé cómo escribir el código para enviar el correo electrónico, pero no sé qué tipo de configuración se necesita para usar el servidor smtp.

Lo que me gustaría es una descripción clara de qué hacer una vez que tengo un servidor smtp instalado en mi cuadro de Vista.

Gracias!

ACTUALIZACIÓN: He descargado este servidor SMTP: http://softstack.com/freesmtp.html

Esto es lo que se ve mi código como:

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();  
    } 
} 

Cuando tengo este servidor SMTP en ejecución y ejecuto mi aplicación de consola, que las manos en el cliente .send line. El servidor SMTP es el siguiente:

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

Después de un tiempo los tiempos client.send a cabo.

¿Alguna idea de lo que está pasando ahora?

Gracias!

Respuesta

9

Como ya sabe SMTP ya no se envía con Vista (que es una de mis mayores quejas sobre Vista). Como ya sabes, hay muchas opciones disponibles, y si encuentras una buena y gratuita, publica un enlace. La forma de configurarlo dependerá del servidor que instale.

Jugué con algunos servidores smtp de prueba, y todos los que usé comenzaron a escuchar en los puertos SMTP estándar en la dirección IP loopback. Creo que este es el MailSettings predeterminado, y no debería requerir ningún cambio.

Ya no tengo ningún servidor SMTP y estoy usando el modo de directorio de recogida. Esto hace que la biblioteca de correo muestre un archivo que luego puedo inspeccionar.

Para configurar este uso lo siguiente en su fichero de configuración:

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

Si desea configurarlo para conectarse al puerto 25 en su máquina local lo haría esto para la sección SMTP:

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

Editar

Terry hizo una buena pregunta sobre el uso de la ubicación de colocación. Solo uso esto para probar, ya que nuestro servidor de producción tiene un servidor SMTP al que me conecto, y lo envío; sin embargo, algunos servidores SMTP se pueden configurar para mirar un directorio y recogerán y enviarán cualquier cosa allí.

No creo que esta función esté destinada a ser utilizada solo para las pruebas, pero funciona muy bien. Los archivos que se generan se pueden abrir en varios clientes de correo para que pueda ver cómo los representarían. Creo que tienen archivos .eml pero no recuerdo.

+0

Así que esta técnica no envía correos electrónicos, ¿verdad? ¿Es solo usado para probar? –

+0

gracias :-) Todavía amo esta solución – JoshBerke

0

puede encontrar un servidor SMTP muy básico codificado en C# .NET en stickymailserver:

pegajosa Mail Server es una baja interacción SMTP Honeypot diseñado para emular una pasarela SMTP abierta. Captura y registra mensajes de sonda y correos masivos y los guarda para su posterior análisis.

0

Puede usar un servidor SMTP alojado externamente. Descubrí que un montón de sistema de correo electrónico bloquea el acceso si el servidor SMTP de origen está detrás de una dirección IP dinámica (como la mayoría de los sistemas residenciales).

Tuve que hacer esto recientemente.

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

Usando el evento "Enviar Completado", puede enviar el correo electrónico en segundo plano sin demorar la aplicación.

0

@JoshBerke

He intentado usar la opción de abajo, pero recibo "No se puede obtener directorio de recogida de IIS". Sé que estoy señalando un directorio existente, ¿hay permisos que necesito configurar en el directorio?

<smtp deliveryMethod="SpecifiedPickupDirectory"> 
    <specifiedPickupDirectory pickupDirectoryLocation="c:\maildrop"/> 
</smtp> 
Cuestiones relacionadas