Logo faq-o-matic.net
Logo faq-o-matic.net

Outlook-Signaturen und wie bekämpft man die Anarchie 1/2

von veröffentlicht am26. August 2013, 06:24 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Client-Software, Office, Outlook, Scripting   Translate with Microsoft Translator Translate EN   Die angezeigte Seite drucken

Dieser Artikel erschien zuerst auf Ollis Blog.

Da es häufiger vorkommt, dass in einem großen Unternehmen BenutzerInnen innerhalb des Unternehmens oder der Standorte umziehen, ändern sich dementsprechend die Benutzerdaten und die Signatur, zu dem sieht jede Signatur irgendwie anders aus.
Mögliche Probleme:

  • Anarchie bei der Signaturerstellung (z.B. Telefonnummernformat, Grußformel, usw.), Corporate Identity soll erreicht werden
  • Aktualität der Daten, siehe dazu meinen nächsten Blogpost => Wie halte ich die AD-Daten aktuell, bzw. lasse es die machen, die wissen sollten wo sie sitzen -> die BenutzerInnen

Damit man diese Signatur nicht bei jeder Person manuell erstellen muss, gibt es verschiedene Möglichkeiten diese zu verteilen.
Folgende Fakten haben wir:

  • Outlook-Signatur liegt im Standard in %APPDATA% => C:\Users\%username%\AppData\Roaming\Microsoft\Signatures)
  • Active-Directoy mit aktuellen Daten (dazu komme ich im nächsten Blogpost ;-)) => Größtes Problem
  • Signatur soll weiterhin anpassbar sein oder auch nicht => großer, technischer Unterschied!

Folgende Verteilungsmöglichkeiten sind mir dabei in den Sinn gekommen:

1. Verteilung einer fertigen Signatur

Signatur wird per Skript auf dem NETLOGON Laufwerk erzeugt und per Login-Skript verteilt.
Die Zuweisung würde über die Registry erfolgen:

  • Zuweisung über den "offiziellen" Weg (KB: 2691977), HKEY_CURRENT_USER\Software\Microsoft\Office\x.0\Common\MailSettings
    Nachteil: BenutzerInnen können ihre Signatur nicht mehr in Outlook anpassen.
  • Zuweisung über den inoffiziellen Weg, direkt in das Profil des Benutzers: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000001
    ("1" bedeutet Kontonummer, im Unternehmen normalerweise die 1)
    Vorteil: Benuter können Ihre Signaturen selber setzen, Nachteil: Signaturnamen liegen als Binary Type im Hex Format vor ("00 4D" => "M") und somit etwas komplizierter zu implementieren

Vorteile:klar definierte Signatur, Zuweisung über Login-Skript einfach möglich, da Domänen-Benutzer in HKCU schreiben dürfen
Nachteil: statisch, da aktualisierte Signatur erst verfügbar, wenn der nächste Genierungslauf durch ist

2. Generierung der Signatur über ein VBSkript im Login-Skript.

Die Zuweisung würde hierbei entweder über die Registry Keys oder über die VB Funktionen erfolgen.
Vorteile: lesbarer Code ohne Registry Zugriffe, Generierung der Signatur bei Login
Nachteile: weiteres Skript muss über das Login-Skript aufgerufen werden
Für meinen Anwendungsfall habe ich mich für die zweite Variante entschieden, da diese deutlich einfacher zu warten ist.

Dazu hier der Code für die Signatur-Generierung (Download via Dropbox: https://dl.dropboxusercontent.com/u/9482545/Outlook_signatur.vbs) :

' Objects
Set objSysInfo = CreateObject("ADSystemInfo")
Set WshShell = CreateObject("WScript.Shell")
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)
Set objWord = CreateObject("Word.Application")
 
' Signature stuff
strName = objUser.givenName + " " + objUser.sn
strDepart = objUser.Department
strDesc = objUser.Description
strStreet = objUser.StreetAddress
strLocation = objUser.l
strPostCode = objUser.PostalCode
strPhone = objUser.TelephoneNumber
strMobile = objUser.Mobile
strFax = objUser.FacsimileTelephoneNumber
strEmail = objUser.mail
strCompany = objUser.Company
aQuote = Chr(34)
aNewLine = Chr(11)
 
If strCompany = "Dummyhausen" then
 strCompanyTitle = "Foobar company Dummyhausen"
 strCompanyWeb = "http://www.specialpage.de"
Else
 strCompanyTitle = "Foobar company"
 strCompanyWeb = "http://www.foobar.de"
End If
 
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries
 
objSelection.Font.Name = "Arial"
objSelection.Font.Size = 10
objSelection.TypeText "Mit freundlichem Gruß"
objSelection.TypeText vbCrLf
if (strCred) Then objSelection.TypeText strCred & strName Else objSelection.TypeText strName
objSelection.TypeText vbCrLf & vbCrLf
' Bold
objSelection.Font.Bold = True
objSelection.TypeText strCompanyTitle + aNewLine
objSelection.TypeText strDepart
objSelection.Font.Bold = False
' not bold
objSelection.TypeText vbCrLf & vbCrLf
if (strCred) Then objSelection.TypeText strCred & strName Else objSelection.TypeText strName
objSelection.TypeText aNewLine
objSelection.TypeText strDesc
objSelection.TypeText vbCrLf
objSelection.TypeText strStreet & aNewLine
objSelection.TypeText strPostCode & " " & strLocation & aNewLine
objSelection.TypeText "Tel: " & strPhone & aNewLine
if (strFax) Then objSelection.TypeText "Fax: " & strFax  & aNewLine
if (strMobile) Then objSelection.TypeText "Mobil: " & strMobile  & aNewLine
objSelection.TypeText vbCrLf
objDoc.Hyperlinks.Add objSelection.Range, "Mailto:" & strEmail, , , strEmail
objSelection.TypeText " | "
objDoc.Hyperlinks.Add objSelection.Range, strCompanyWeb, , ,strCompanyWeb
objSelection.TypeText vbCrLf
objSelection.TypeText "________________________________"
objSelection.TypeText vbCrLf & vbCrLf
objSelection.TypeText "Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist nicht gestattet."
objSelection.TypeText vbCrLf & vbCrLf
objSelection.TypeText "This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden."
objSelection.TypeText vbCrLf
 
Set objSelection = objDoc.Range()
 
' full signature
objSignatureEntries.Add "Full Signature", objSelection
objSignatureObject.NewMessageSignature = "Full Signature"
 
objDoc.Saved = True
 
' reply signature
objSignatureEntries.Add "Reply Signature", objSelection
objSignatureObject.ReplyMessageSignature = "Reply Signature"
objDoc.Saved = True
' EOF

Dieses Skript hat keinerlei Ausgaben, sondern verrichtet die Arbeit komplett im Hintergrund, somit werden die BenutzerInnen nicht belästigt, im Beispiel wird die gleiche Signatur für die "Antwort Signatur" genommen, das könnte man noch aufteilen, in dem man eine Kurzsignatur dazu entwirft, mit dem Beispiel sollte man das eigentlich einfach hinbekommen. Es nutzt die Office VBSkript Bibliotheken und liest die eigenen Benutzerdaten aus dem AD.

Nun muss das Skript nur noch in das Login-Skript eingebaut werden, anschließend werden bei allen PC-Anmeldungen die Signaturen neugeschrieben und aktiviert.

Fazit: Ohne großen Aufwand kann die Corporate Identity durchgesetzt werden.

Download-Link: https://dl.dropboxusercontent.com/u/9482545/Outlook_signatur.vbs

© 2005-2017 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!