[Update]: Dieser Beitrag wurde am 26. Juli 2021 aktualisiert.
Das Einrichten einer E-Mail-Signatur für alle Outlook-Anwender in der Organisation ist sehr aufwändig, insbesondere wenn es händisch erledigt werden muss. Zudem führt jede Änderung dazu, dass man wieder von vorn anfangen muss.
Aus diesem Grund greifen Systemadministratoren oftmals zu zentralisierten Lösungen. Ein möglicher Ansatz ist ein Log-on-Skript, gepusht auf die Workstations via Group Policy Object. Loggt sich der Enduser ein, zieht sich das Skript Informationen über die betreffende Person aus dem Active Directory und fügt in Outlook eine personalisierte E-Mail-Signatur an. Nachstehend finden Sie eine Anleitung, wie Sie so ein Skript erstellen.
Skripterstellung
Zunächst benötigen Sie ein VBS-Skript, das in Outlook Signaturen anfügt. Der unten stehende Beispielcode liest Anwenderdaten aus dem Active Directory aus. Diese Daten erscheinen anschließend in der Signatur. Das Skript fügt die Signatur in neuen E-Mails und Antworten an.
On Error Resume Next Set objSysInfo = CreateObject("ADInformation") strUser = objSysInfo.UserName Set objUser = GetObject("LDAP://" & strUser) If objUser Is Empty Then _ MsgBox "No connection with LDAP information.", _ vbCritical, "Error": Exit Sub strName = objUser.FullName strTitle = objUser.Title strDepartment = objUser.Department strCompany = objUser.Company strPhone = objUser.telephoneNumber Set objWord = CreateObject("Word.Application") Set objDoc = objWord.Documents.Add() Set objSelection = objWord.Selection Set objEmailOptions = objWord.EmailOptions Set objSignatureObject = objEmailOptions.EmailSignature Set objSignatureEntries = objSignatureObject.EmailSignatureEntries ' Beginning of signature block objSelection.TypeText strName & ", " & strTitle objSelection.TypeParagraph() objSelection.TypeText strDepartment objSelection.TypeParagraph() objSelection.TypeText strCompany objSelection.TypeParagraph() objSelection.TypeText strPhone ' End of signature block Set objSelection = objDoc.Range() objSignatureEntries.Add "AD Signature", objSelection objSignatureObject.NewMessageSignature = "AD Signature" objSignatureObject.ReplyMessageSignature = "AD Signature" objDoc.Saved = True objWord.Quit
Den Code kopieren Sie einfach in einen Texteditor (z.B. Windows Notepad) und speichern ihn mit VBS-Dateierweiterung.
Zum Test führen Sie das Skript auf einer Workstation mit installiertem Outlook (stellen Sie sicher, dass Outlook nicht grade ausgeführt wird) aus. Sobald Sie Outlook öffnen und eine neue Nachricht erstellen, sollte sie eine Signatur enthalten, welche dem nachstehenden Beispiel ähnelt:
Zum Anpassen der Signatur ändern Sie den Skriptcode zwischen ‘ Beginning of signature block und ‘ End of signature block. Mal angenommen, die E-Mail-Adresse des Anwenders soll am Ende der Signatur erscheinen. Dazu fügen Sie in den Signaturcode folgende Zeile ein:
objSelection.TypeParagraph() objSelection.TypeText strEmail
Der Signaturcode sieht im Resultat wie folgt aus:
' Beginning of signature block objSelection.TypeText strName & ", " & strTitle objSelection.TypeParagraph() objSelection.TypeText strDepartment objSelection.TypeParagraph() objSelection.TypeText strCompany objSelection.TypeParagraph() objSelection.TypeText strPhone objSelection.TypeParagraph() objSelection.TypeText strEmail ' End of signature block
Um in die Signatur statischen Text einzufügen, also solchen, der nicht aus dem Active Directory gezogen wird, ersetzen Sie den Platzhalterteil im Befehl objSelection.TypeText (z.B. strEmail) durch Ihren Text in Anführungszeichen. Das nachstehende Beispiel enthält einen zusätzlichen Umweltschutz-Disclaimer:
' Beginning of signature block objSelection.TypeText strName & ", " & strTitle objSelection.TypeParagraph() objSelection.TypeText strDepartment objSelection.TypeParagraph() objSelection.TypeText strCompany objSelection.TypeParagraph() objSelection.TypeText strPhone objSelection.TypeParagraph() objSelection.TypeText strEmail objSelection.TypeParagraph() objSelection.TypeText "Please consider the environment before printing this message." ' End of signature block
Verteilung der Signatur via Gruppenrichtlinie
Um das Skript automatisch auf alle Workstations in der Organisation zu pushen, bedient man sich am besten einer Gruppenrichtlinie. Dadurch bekommt jeder Anwender seine Signatur zugeteilt, sobald er sich an seinem PC einloggt.
Zunächst melden Sie sich an Ihrem Server an und klicken Sie auf den Menü-Button Start, Administrative Tools, Group Policy Management. Alternativ tippen Sie den Befehl gpmc.msc in das Suchfeld unter Start-Menü ein. Das Hauptfenster der GPO-Konsole wird geöffnet:
Links erweitern Sie das Verzeichnis mit dem Namen Ihres Servers, Group Policy Objects. Mit der rechten Maustaste klicken Sie auf Default Domain Policy und gehen Sie auf Edit.
In dem Group Policy Management Editor links erweitern Sie User Configuration, Policies, Windows Settings, und gehen Sie auf Scripts (Logon/Logoff).
Als Nächstes klicken Sie 2x auf die Logon-Option rechts, um das Fenster Logon Properties zu öffnen. Klicken Sie auf den Button Show Files…, um den Ordner mit Skripten zu öffnen. Kopieren Sie Ihr VBS-Skript in den Ordner. Im Fenster Logon Properties klicken Sie auf den Button Add…, Browse… und wählen Sie das neue Skript aus.
Ihre Einstellungen bestätigen Sie mit OK.
Das war’s schon – sobald sich Ihre User an deren Workstations anmelden, greift das Skript und hängt in Outlook eine einheitiche Signatur mit Absenderdaten aus dem AD an.
Einschränkungen und wie man sie umgeht
Die Methode erweist sich als praktisch, sie hat allerdings einige Makel:
- Anwender können ihre Signaturen bearbeiten, sodass der einheitliche Look Ihrer Geschäftskorrespondenz ausgehebelt wird.
- Diese Signaturen sind nur in Outlook für Windows verfügbar.
- Jede Änderung in der Signatur erfordert, dass sich alle User ab- und wieder anmelden, damit das Skript neu geladen wird und das neue Format greift.
- Die Anpassung des Formats ist ein wenig aufwändig und erfordert Programmierkenntnisse.
- Der Vorgang erfordert administrativen Zugang zum Server.
- Es gibt keine Möglichkeit, die Custom- / Extension-Attribute oder bedingte Platzhalter zu verwenden, um die Integration mit den Tools zum Messen der Kundenzufriedenheit zu automatisieren.
- Diese Methode wurde nicht mit LDAPS getestet. Sie können aber frei prüfen, ob sie mit dem Port 636 funktioniert.
Diese Hürden lassen sich mit Lösungen wie die CodeTwo Exchange Rules, CodeTwo Exchange Rules Pro (für den lokalen Exchange Server) oder CodeTwo Email Signatures for Office 365 (für Microsoft 365) überwinden. Sie bieten dem Anwender viele zusätzliche Vorteile, wie z.B. eine leicht zu bedienende Oberfläche für Signaturtemplates und Regeln:
- Integrierte Testfunktion ermöglicht Vorschau der Signatur, noch bevor sie produktiv angewendet wird,
- Unterstützung für alle E-Mails, die den Transportdienst von Exchange passieren, egal von welchem Mailclient sie gesendet werden,
- Fernzugriff auf Regeln und Templates. Auf diese Weise kann die Gestaltung beispielsweise an Ihr Marketingteam delegiert werden, ohne dass kritische Serverfunktionen aus der Hand gegeben werden,
- Vorinstallierte Bibliothek mit fertigen Templates,
- Unterstützung für alle E-Mail-Formate – egal ob HTML, Plain Text oder RTF,
- Alle Programmfunktionen können 30 Tage unentgeltlich getestet werden.
- u.v.m.
Das Skript ist seit vielen jahren bei uns im Einsatz, habe es von meinem Vorgänger übernommen. Nachdem ich heute Anpassungen vornehmen wollte, habe ich durch Trial& Error herausgefunden, dass die Strings im Bereich
objSignatureEntries.Add “AD Signature”, objSelection
objSignatureObject.NewMessageSignature = “AD Signature”
objSignatureObject.ReplyMessageSignature = “AD Signature”
jeweils maximal 32 Zeichen lang sein können. Lässt sich das irgendwie umgehen, so dass hier längere Zeichenketten angegeben werden können?
Hallo,
Tut mir leid, es wurde nie in Betracht gezogen, Signaturnamen mit mehr als 32 Zeichen zu verwenden, daher war diese Einschränkung nicht einmal bekannt. Wenn die Zeichenfolgenlänge begrenzt ist, müssen Sie leider die Benennung optimieren, um unter dieser Zahl zu bleiben. Basiert die Zeichenfolge auf dem Benutzernamen? Können Sie ein Beispiel geben?
Grüße,
Tomek
Hallo,
wie kann das Skript auf LDAPS Port 636 angepasst werden?
Die Abfragen sind bald nicht mehr über LDAP 389 möglich. Wir stellen bald auf die Verschlüsselung um.
Danke!
Grüße Marc
Hallo,
bei mir wird leider nichts in die Signatur geschrieben.
Was kann falsch sein?Habe auch schon oben wie beschrieben die Zeile geändert.
Liebe Grüße
Hansolo
Hallo Jörg,
ich habe das Skript mit dem unten angegebenen Fragment ergänzt. Das neue Fragment befindet sich am Anfang des Skripts. Versuche mal bitte jetzt.
If objUser Is Empty Then _
MsgBox "No connection with LDAP information.", _
vbCritical, "Error": Exit Sub
Grüße,
Pawel
Super Skript,
klasse.
muste nur
Set objSysInfo = CreateObject(“ADInformation”) in
Set objSysInfo = CreateObject(“ADSystemInfo”) ändern
hab es am laufen :-) Vielen Dank für die ausfühliche Erklärung :-)