2009-05-29 17 views
10

Tengo una aplicación web que se ejecuta en Windows IIS. Esta aplicación tiene una base de datos donde cada elemento tiene una clave única (1, 2, 3 ...) y una lista de direcciones de correo electrónico (entre otras cosas).¿Transmitir el correo electrónico entrante a una secuencia de comandos en Windows IIS SMTP?

me gustaría a los usuarios enviar correo electrónico al servidor, utilizando una dirección de correo electrónico que identifica el artículo, entonces el servidor de retransmisión del mensaje a las direcciones de correo electrónico de ese elemento. Por ejemplo, si un usuario envía correo electrónico a la siguiente dirección:

[email protected] 

A continuación, el servidor podría recibir el correo electrónico y el tubo a un guión. La secuencia de comandos consultará la base de datos para el elemento 75 para obtener una lista de direcciones de correo electrónico y luego volver a enviar el correo electrónico.

que podía hacer esto fácilmente en un sistema UNIX usando sendmail, pero no tengo ni idea de si una configuración similar puede llevarse a cabo en un sistema Windows (o si requiere software adicional).

Respuesta

7

(Parece que desea implementar una característica como craigslist).

El servicio IIS SMTP puede enviar correos electrónicos, y también aceptar correo electrónico.

Esto es lo que quieres hacer.

Configurar el servicio SMTP de IIS para aceptar mensajes de correo electrónico para un dominio (Esto se puede configurar en las propiedades del servicio IIS SMTP, en dominios). Diga el nombre de dominio "myserver.example.com"

Luego, en el servidor de DNS, configurar un registro MX que apunta a "myserver.example.com".

Ahora, cuando se envía el correo electrónico a su servidor IIS SMTP, en realidad se colocará en su carpeta mailroot/drop (también puede cambiar esta carpeta en las propiedades del Servicio IIS SMTP).

Ahora que usted está aceptando el correo electrónico, el siguiente paso es escribir un script que:

1) analizar los mensajes de correo electrónico.

2) Modificar en consecuencia (hacer lo que desea cambiar la dirección "a"?).

3) Si desea volver a enviar los mensajes de correo electrónico, a continuación, resulta necesario modificar en consecuencia. Deberá agregar un único encabezado X-Sender, que se utiliza para identificar la dirección de correo electrónico que envía el correo electrónico, y un encabezado X-Receiver, para cada destinatario que va a aceptar el correo electrónico. He aquí un ejemplo de correo electrónico que se ha modificado:

X-Sender: [email protected] 
X-Receiver: [email protected] 
X-Receiver: [email protected] 
From: "jim bob" <[email protected]> 
To: <[email protected]> 
Subject: test 
MIME-Version: 1.0 
Content-Type: text/plain; 
Message-ID: <[email protected]> 


test 

Una vez que haya modificado este contenido, tendrá que escribir en un archivo en el directorio mailroot/recogida. Asegúrate de usar un nombre único.

El servicio IIS SMTP vendrá, recogerá el correo electrónico y lo retransmitirá, enviando el correo electrónico usando el X-Sender como la dirección MAIL FROM, y enviándolo a cada dirección de correo electrónico indicada en cada encabezado X-Receiver.

4) Ejecute este script como una tarea programada. Otra opción es construirlo como un servicio de Windows, o implementar algo así como un sistema de archivos vigilante, donde se ejecuta cada vez que se crea un correo electrónico como un archivo.

5) Otra opción para todo esto es implementar realmente un Sink Event Sink, pero creo que es exagerado para lo que quieres hacer, y puede crear más dolores de cabeza, de lo que resuelve. Solo iría a la ruta del sumidero del evento si me gusta el dolor.

Afortunadamente no lo hice tan claro como el barro.

+0

tampoco está claro: S, prefiero la opción de fregadero siguiente, ya que maneja el correo electrónico directamente en la recepción del servidor, supongo que se trata de un servidor de intercambio. – JDuarteDJ

0

Puede leer en correo electrónico a través de POP3 o IMAP usando un script temporizado. También soy un UNIXer, así que estoy luchando por comprender cómo algo así es tan difícil, pero ahí lo tienes. Esto es lo que creo que debes hacer.

  • Realice un script en el idioma que desee. Siempre que pueda leer de POP3 o IMAP.

  • que Windows se ejecute la secuencia de comandos cada 5 minutos

  • tener el acceso a la escritura del buzón y la acción cualquier correo electrónico que necesita para.

Mi preferencia personal sería instalar Python, pero si está limitado ... No lo sé. ASPNET no está mal, pero nunca antes lo he usado para crear scripts sucios.

+0

Gracias - que es una opción que estoy investigando. Sin embargo, también necesito saber si es posible tener varias direcciones como "elemento-1", "elemento-2", creadas a pedido. Por ejemplo, ¿podrían todos los correos electrónicos entrantes caer en un solo archivo? – BarelyFitz

+0

esto parece una solución muy poco confiable, ¡sin mencionar la lentitud! – JDuarteDJ

2

¡Los fregaderos de eventos no son nada difíciles! De hecho, hay alrededor de una docena de ejemplos escritos en VBS (que se ejecuta en un servidor Win utilizando WSH) que logran exactamente lo que desea hacer. El receptor de eventos OnArrival se ejecuta en tiempo real utilizando cualquier cuenta de usuario de computadora que desee sin ningún riesgo de seguridad ya que el mensaje es asincrónico y no informa.

Esto es realmente una cosa terriblemente fácil de hacer, una de las más fáciles. Una vez configurado, nunca se rompe. ¡En un servidor he tenido uno funcionando por más de 9 años procesando unos miles de mensajes entrantes por día! Configuré alrededor de una docena de estas cosas: si te lleva más de un par de horas, lo estás haciendo muy mal. Si fuera más fácil que esto en UNIX, mi abuela podría ser programadora de UNIX, así que no me jactaría de que esto es más fácil de hacer en un servidor UNIX.

http://msdn.microsoft.com/en-us/library/ms528023.aspx

http://support.microsoft.com/kb/894286

http://msdn.microsoft.com/en-us/library/ms526206.aspx

http://msdn.microsoft.com/en-us/library/ms526620.aspx

+0

Gracias Nick - si tiene algún enlace u otros indicadores que sean apreciados. – BarelyFitz

+0

Creo que esta es la mejor opción porque se procesa directamente a la llegada. También sabe dónde puedo encontrar un ejemplo de trabajo, todavía tengo un servidor * old *. No puedo encontrar nada sobre cómo cargar/ejecutar el SINK para que se registre. – JDuarteDJ

Cuestiones relacionadas