Outlook 2010 Betreff ändern bzw. einkürzen ( Teil II )
Moin
Wir erhalten Anfragen per Mail über diverse Webseiten. Jede Webseite hat einen anderen (unsinnigen) Betreff. Wir nutzen einen Exchange und auf den Clients Outlook 2010/2013/2016. Die Anfragen landen bei uns in einem Sammelpostfach, welches bei den Mitarbeitern zusätzlich zum persönlichen Postfach eingehängt ist.
Den Betreff möchte ich abhängig vom Absender automatisch ändern. Eine Anpassung am Exchange ist keine Option. Mein Rechner läuft durchgehend und ich kann ein bisschen VBA, deswegen suche ich eine Lösung die ich lokal an meinem Rechner umsetzen kann.
Gefunden habe ich das hier:
Link zum Administrator-Forum (2017)
Das habe ich etwas umgebaut, aber es gibt Probleme:
Sobald die Mail ( original Betreff "hallo" ) bei mir in Outlook ankommt hat sie bereits den neuen durch das Script geänderten Betreff "hallo, geändert". Im Sekundenbruchteil ändert der sich jedoch wieder zu "hallo" und bleibt dann so. Jedesmal.
Ich führe das auf Sync-Probleme mit den anderen Clients zurück.. die die Mail womöglich erst nach mir mit altem bekommen und dann den Betreff auf dem Server wieder zurücksetzen.
Deswegen habe ich ins Script ein DoLoop mit DoEvent eingebaut, das zwischen Empfang und Änderung für ein paar Sekunden Pause sorgt. Sleep lässt mir nämlich das Outlook einfrieren.
Zunächst 3 Sekunden.. nach 5-7 Sekunden wieder Reset. Dann 10 Sekunden.. trotzdem nach 15 Sekunden noch der Reset. Mit 20 Sekunden funktioniert es bisher.
Problem: Wenn innerhalb dieser 20 Sekunden noch eine zweite Mail eingeht.. wird die nicht mehr bearbeitet. Erst wenn das Script durchgelaufen ist kann eine weitere neue Mail bearbeitet werden.
Hier mein Script in ThisOutlookSession mit aktivierten Makros:
Gibt es eine bessere Lösung?
Und ich habe gleich schon eine Idee.. das Event soll am besten nur den Eingang einer neuen Mail abgreifen, den ganzen Rest mit Pause und Betreff-Änderung an eine Subroutine übergeben.. und direkt wieder beendet werden.. egal wie lange die Subroutine für die Arbeit dann braucht. Ich weiß noch nicht genau wie ich das realisieren kann. Ich hoffe das ist ein richtiger Denkansatz und ist das Ausprobieren wert.
Meinungen oder vielleicht Hilfen dazu?
Wir erhalten Anfragen per Mail über diverse Webseiten. Jede Webseite hat einen anderen (unsinnigen) Betreff. Wir nutzen einen Exchange und auf den Clients Outlook 2010/2013/2016. Die Anfragen landen bei uns in einem Sammelpostfach, welches bei den Mitarbeitern zusätzlich zum persönlichen Postfach eingehängt ist.
Den Betreff möchte ich abhängig vom Absender automatisch ändern. Eine Anpassung am Exchange ist keine Option. Mein Rechner läuft durchgehend und ich kann ein bisschen VBA, deswegen suche ich eine Lösung die ich lokal an meinem Rechner umsetzen kann.
Gefunden habe ich das hier:
Link zum Administrator-Forum (2017)
Das habe ich etwas umgebaut, aber es gibt Probleme:
Sobald die Mail ( original Betreff "hallo" ) bei mir in Outlook ankommt hat sie bereits den neuen durch das Script geänderten Betreff "hallo, geändert". Im Sekundenbruchteil ändert der sich jedoch wieder zu "hallo" und bleibt dann so. Jedesmal.
Ich führe das auf Sync-Probleme mit den anderen Clients zurück.. die die Mail womöglich erst nach mir mit altem bekommen und dann den Betreff auf dem Server wieder zurücksetzen.
Deswegen habe ich ins Script ein DoLoop mit DoEvent eingebaut, das zwischen Empfang und Änderung für ein paar Sekunden Pause sorgt. Sleep lässt mir nämlich das Outlook einfrieren.
Zunächst 3 Sekunden.. nach 5-7 Sekunden wieder Reset. Dann 10 Sekunden.. trotzdem nach 15 Sekunden noch der Reset. Mit 20 Sekunden funktioniert es bisher.
Problem: Wenn innerhalb dieser 20 Sekunden noch eine zweite Mail eingeht.. wird die nicht mehr bearbeitet. Erst wenn das Script durchgelaufen ist kann eine weitere neue Mail bearbeitet werden.
Hier mein Script in ThisOutlookSession mit aktivierten Makros:
Dim WithEvents itms As Items
Private Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
Private Sub Application_Startup()
Set itms = Session.Stores.Item("sammel@postfach.de").GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub itms_ItemAdd(ByVal Item As Object)
Dim NowTick As Long
Dim EndTick As Long
If Item.Class = olMail Then
With Item
EndTick = GetTickCount + (20 * 1000)
Do
NowTick = GetTickCount
DoEvents
Loop Until NowTick >= EndTick
'Webseite-A
If .SenderEmailAddress = "anfrage.von@webseite-a.com" Then
.Subject = "Anfrage über Web-A, " & .Subject
.Save
End If
'Webseite-B
If .SenderEmailAddress = "anfrage.von@webseite-b.de" Then
.Subject = "Anfrage über Web-B, " & .Subject
.Save
End If
End With
End If
End Sub
Gibt es eine bessere Lösung?
Und ich habe gleich schon eine Idee.. das Event soll am besten nur den Eingang einer neuen Mail abgreifen, den ganzen Rest mit Pause und Betreff-Änderung an eine Subroutine übergeben.. und direkt wieder beendet werden.. egal wie lange die Subroutine für die Arbeit dann braucht. Ich weiß noch nicht genau wie ich das realisieren kann. Ich hoffe das ist ein richtiger Denkansatz und ist das Ausprobieren wert.
Meinungen oder vielleicht Hilfen dazu?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 569852
Url: https://administrator.de/forum/outlook-2010-betreff-aendern-bzw-einkuerzen-teil-ii-569852.html
Ausgedruckt am: 01.04.2025 um 14:04 Uhr
5 Kommentare
Neuester Kommentar

Gibt es eine bessere Lösung?
Ja, würde das nicht auf den Clients machen, sondern direkt auf dem Server etwa mit EWS (Exchange Webservices), so muss auch kein Client dafür unsinnigerweise dauerhaft laufen, guck mal hier gibt's ein BeispielScript odgl ausführen, wenn E-Mail eingeht
Wenn sowieso ein Exchange läuft wäre das IMHO sinniger als mit VBA am Client zu hantieren.
p.s. Teil1 wo??
Wasch mich, aber mach mich nicht nass
BP ist tatsächlich das über den Exchange (Transportregel o.ä.) oder, falls vorhanden, eine vorgelagerte Mail Appliance abzufackeln.

Wer sagt das du am Server etwas anpassen musst?? EWS ist eine universelle Web-Schnittstelle die auch Outlook und OWA nutzen um auf den EX zuzugreifen. EWS Abfragen können mit den passenden Berechtigungen auf die Mailbox von einem beliebigen Client aus ausgeführt werden, denn das arbeitet über simple SOAP Webabfragen! Deine Aussage ist also völlig falsch!