Rør indgående email til et script på Windows IIS SMTP?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en webapplikation, der kører på Windows IIS. Denne app har en database, hvor hvert element har en unik nøgle (1, 2, 3 ...) og en liste over e-mail-adresser (blandt andet).


Jeg vil gerne have, at brugerne sender e-mail til serveren ved hjælp af en e-mail-adresse, der identificerer varen, og så har serverrelæet beskeden til e-mailadresserne for det pågældende emne. For eksempel, hvis en bruger sender e-mail til følgende adresse:


item-75@myserver.example.com


Derefter ville serveren modtage e-mailen og røre den til et script. Skriften ville forespørge databasen for punkt 75 for at få en liste over e-mail-adresser, og send derefter e-mailen igen.


Jeg kunne gøre det nemt på et unix-system ved hjælp af sendmail, men jeg har ingen anelse om, at en lignende opsætning kan udføres på et Windows-system (eller hvis det ville kræve yderligere software).

Bedste reference


(Det lyder som om du vil implementere en funktion som craigslist).


IIS SMTP-tjenesten kan sende e-mail og også acceptere e-mail.


Her er hvad du vil gøre.


Konfigurer din IIS SMTP-tjeneste for at acceptere e-mails for et domæne (Du kan konfigurere dette i egenskaberne af IIS SMTP-tjenesten under domæner). Sig domænenavn 'myserver.example.com'


Derefter konfigurerer du i din DNS-server en MX-post, der peger på 'myserver.example.com'.


Nu, når e-mail bliver sendt til din IIS SMTP-server, bliver den faktisk placeret i din mailroot/drop-mappe (du kan også ændre denne mappe i IIS SMTP-serviceegenskaberne).


Nu hvor du accepterer email, er det næste skridt at skrive et script, der vil:


1) Parse e-mails.


2) Rediger dem tilsvarende (vil du bare ændre 'til' -adressen?).


3) Hvis du vil sende emails igen, skal du ændre dem i overensstemmelse hermed.
Du skal tilføje en enkelt X-Sender header, der bruges til at identificere e-mail-adressen, der sender e-mailen og en X-Receiver header, for hver modtager, der vil acceptere e-mailen. Her er et eksempel på e-mail, der blev ændret:


X-Sender: me@mywebsite.com
X-Receiver: recip1@theirdomain.com
X-Receiver: recip2@theirdomain.com
From: "jim bob" <jim@example.com>
To: <item-75@myserver.example.com>
Subject: test
MIME-Version: 1.0
Content-Type: text/plain;
Message-ID: <024f01c9e130$b3eca500$0401a8c0@local>


test


Når du har dette ændrede indhold, vil du gerne skrive det til en fil i mailroot/afhentningsmappen. Sørg for at bruge et unikt navn.


IIS SMTP-tjenesten vil komme forbi, afhente e-mailen og relæere den, sende e-mailen via X-Sender som MAIL FROM-adressen og sende den til hver e-mail-adresse, der er angivet i hver X-Receiver header.


4) Kør dette script som en planlagt opgave. En anden mulighed er at opbygge den som en windows-tjeneste eller at implementere noget som en filsystemvatcher, hvor den udføres hver gang en email oprettes som en fil.


5) En anden mulighed for alt dette er faktisk at gennemføre en SMTP Event Sink, men jeg synes, det er overkill for hvad du vil gøre, og kan skabe mere hovedpine end det løser. Jeg ville kun gå begivenheden synke rute, hvis jeg kan lide smerte.


Forhåbentlig gjorde jeg det ikke så klart som mudder.

Andre referencer 1


Event Sinks er slet ikke svær! Faktisk er der omkring et dusin eksempler skrevet i VBS (som kører på en Win-server ved hjælp af WSH), hvilket gør præcis det, du ønsker at gøre. OnArrival-begivenhedssynken kører i REALTID med enhver computerbrugerkonto, du ønsker uden nogen sikkerhedsrisiko, da meddelelsen er asynkron og ikke rapporterer tilbage.


Dette er faktisk en frygtelig let ting at gøre - en af ​​de letteste. Når det er oprettet, bryder det aldrig heller. På en server har jeg haft en løb i mere end 9 år med at behandle et par tusinde indgående meddelelser om dagen! Jeg har sat op om et dusin af disse ting - hvis det tager dig mere end et par timer, gør du det meget forkert. Hvis det var nemmere end dette på UNIX, kunne min bedstemor være en UNIX-programmør, så jeg ville ikke bange, at det er lettere at gøre på en UNIX-server.


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


http://support.microsoft.com/kb/894286[4]


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


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

Andre referencer 2


Du kunne læse i e-mail via POP3 eller IMAP ved hjælp af et timet script. Jeg er også en UNIXer, så jeg kæmper for at forstå, hvordan noget som dette er så svært, men der har du det. Her er hvad jeg regner med, du burde gøre.



  • Lav et script på det sprog, du kan lide. Så længe det kan læses fra POP3 eller IMAP.

  • Har Windows kør scriptet hvert 5. minut

  • Få scriptet adgang til postkassen og handling eventuelle e-mails, der skal bruges.



Min personlige præference ville være at installere Python, men hvis du er begrænset ... ved jeg ikke. ASPNET er ikke dårligt, men jeg har aldrig brugt det til dirty-scripting før.