toheil
Goto Top

Exchange 2003, oeffentlicher Ordner, eingehende mails, Anhaenge automatisch im Dateisystem speichern ?

Anhaenge automatisch im Dateisystem speichern ?

hallo,

wir haben einen oeffnetlichen ordner in exchange.
dieser empfaengt mails mit dateianhaengen.
diese anhaenge moechte ich automatisch beim eintreffen
ins dateisystem in einen ordner speichern.

hat jemand erfahrung mit so etwas ?
wie kann ich sowas machen ?

bin durch google auf event sinks gekommen, ist das die beste moeglichkeit ?
hat jemand bsp. fuer sowas ?

es soll nicht ueber outlook laufen, also auf keine fall am client, sondern bei eintreffen der mail
am exchange server !

danke fuer eure hilfe.

Content-ID: 27489

Url: https://administrator.de/contentid/27489

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

marioalfa
marioalfa 06.03.2006 um 20:55:03 Uhr
Goto Top
yepp, ein event sink ist die erste wahl. Mein script dafür sieht so aus:

(SCRIPT LANGUAGE="VBScript")


Sub ExStoreEvents_OnSave(pEventInfo, bstrURLItem, lFlags)


set msg = createobject("cdo.message")
msg.datasource.open bstrURLItem
set objattachments = msg.attachments
for each objattachment in objattachments
if objAttachment.ContentMediaType = "message/rfc822" then
procattach(objattachment)
else
objattachment.savetofile "\\server\share\" & objattachment.filename
end if
next
set msg = nothing


End sub


function procattach(objattachment)
set msg1 = createobject("cdo.message")
msg1.datasource.OpenObject objattachment, "ibodypart"
set objattachments1 = msg1.attachments
for each objattachment1 in objattachments1
if objAttachment1.ContentMediaType = "message/rfc822" then
procattach(objattachment1)
else
objattachment1.savetofile "\\server\share\" & objattachment1.filename
end if
next
set msg1 = nothing
end function


(/SCRIPT)

ACHTUNG: Die runden Klammern in der ersten und letzten Zeile durch <> ersetzen !!!!

bitte frage mich nicht, wie es genau funktioniert, habs auch nur übernommen und die Verzeichnisse angepasst. Aber es scheint auch mit angehängten email und den attachments darin zurechtzukommen (rekursives speichern).
Vorher musst du natürlich noch die dlls registrieren und die eshmts.vbs ausführen.
Siehe: http://support.microsoft.com/kb/264995/en-us
Dann noch mit regevent.vbs das script auf die richtige mailbox binden.
marioalfa
marioalfa 08.03.2006 um 13:35:17 Uhr
Goto Top
So hier das ganze nochmal etwas genauer.
Die Event Sinks sind Scripte, die auf nahezu beliebige Ereignisse (Events) auf Mailboxen oder auf einzelne Folder von Mailboxen gebunden werden können. Ereignisse sind z.B. speichern (einer neuen email), löschen, anschauen, und und und.
Damit das funktioniert muss erst das com+ object eingerichtet werden, das geschieht nach MS KB264995, gilt auch für Exchange 2003. Die .dlls sollten bereits im Exchange bin Verzeichnis vorhanden sein.
Mit der eshmts.vbs (auf Exchange CD setup\i386) wird dann das com+ Object installiert (Parameter install) und auch ein Account vergeben, unter dem das ganze läuft. Dieser Account muss natürlich Rechte zu der Mailbox und dem Share haben.
Jetzt erst können Event Sinks installiert und ausgeführt werden.
Mit regevent.vbs, das im Exchange SDK dabei ist und unter \Program Files\Exchange SDK\SDK\Support\OLEDB\Scripts installiert wird kann nun ein vb script auf eine Mailbox /Mailbox folder installiert werden. Und immer, wenn das entsprechende Ereignis eintritt wird das script ausgeführt.
Genaues zu regevent.vbs findet man hier http://msdn.microsoft.com/library/default.asp?url=/library/en-us/e2k3/e ....
Hier ein Beispiel für regevent.vbs:
cscript regevent.vbs ADD "onsave" ExOleDB.ScriptEventSink.1 "file://./backofficestorage/domain/public%20folders/myfolder/EventRegItem1" -file saveattachmentsink.vbs

ADD - hinzufügen eines Event Sink
"onsave" - beim speichern, hier beim eintreffen einer neuen email, die im Postfach gespeichert wird
ExOleDB.ScriptEventSink.1 - SinkClass, würde ich so lassen
"file:..." - der Folder im Exchange System, wo der Event Sink installiert wird
-file ... - das eigentliche Script, das installiert werden soll.