J'ai passé quelques jours à la recherche sur cette question et il semble qu'il est très difficile d'ajouter un code personnalisé à un événement e-mail entrant. Et beaucoup de méthodes pour le faire seront simplement ignorées si Exchange pense que cela ralentit le système de messagerie. (http://www.outlookcode.com/article.aspx?id=62)
L'autre méthode consiste à se connecter aux événements SMTP qui fonctionnent mais qui sont un peu bidouillés. Pour ce faire vous devez écrire un wscript puis l'enregistrer contre l'événement d'arrivée d'un email.
Voici un exemple de script vb pour l'ajout d'une référence hexadécimale aléatoire sur chaque e-mail envoyé via SMTP.
<SCRIPT LANGUAGE="VBScript">
Sub IEventIsCacheable_IsCacheable()
'To implement the interface, and return S_OK implicitly
End Sub
Sub ISMTPOnArrival_OnArrival(ByVal Msg, EventStatus)
Dim Flds
randomize()
set Flds = Msg.Fields
With Flds
strSubject = .Item("urn:schemas:httpmail:subject")
if instr(strSubject, "Ref=") = 0 then
strSubject = Replace(strSubject, CHR(9), "") & " (Ref=" & hex(replace(timer(), ".", "")) & hex(rnd()) & ")"
.Item("urn:schemas:httpmail:subject") = strSubject
.Update
else
strSubject = LEFT(strSubject, instr(strSubject, "(Ref=") - 1) & MID(strSubject, instr(instr(strsubject, "(Ref="), strSubject, ")") + 1, Len(strSubject)) & " (Ref=" & hex(replace(timer(), ".", "")) & hex(rnd()) & ")"
.Item("urn:schemas:httpmail:subject") = strSubject
.Update
end if
End With
Msg.Datasource.Save
EventStatus = 0 'Run next sink
End Sub
</SCRIPT>
Ensuite, pour enregistrer le script, exécutez ceci.
Cscript smtpreg.vbs /add 1 onarrival SMTPAddRef CDO.SS_SMTPOnArrivalSink "mail from=*"
Cscript smtpreg.vbs /setprop 1 onarrival SMTPAddRef Sink ScriptName "C:\ENTERPATH\SMTPRef.vbs"
Pour annuler l'inscription du script, procédez comme suit;
cscript smtpreg.vbs /remove 1 onarrival SMTPAddRef
La méthode la plus résiliente semble être de créer un système basé sur le minuteur pour vérifier les nouveaux messages toutes les X minutes.
Pas aussi lisse que j'espérais mais ça va faire.
Espérons que cela aide les autres.
Vous cherchez peut-être à l'exécuter sur le serveur? AFAIK, PowerShell, même Exchange Management Shell, n'aidera pas beaucoup ici. Vous devez regarder dans "Exchange Web Services Managed API", qui est une bibliothèque .NET que vous devrez appeler en utilisant PowerShell, ou C#, par exemple. J'ai besoin d'enquêter sur le type d'événement Eventing fourni par Exchange. –