stefankittel
Goto Top

Zentrale Signatur in Outlook ohne Exchange?

Hallo,

klingt vieleicht komisch, aber ich wollte mal fragen ob Jemand eine Lösung kennt um zentrale Signaturen zu verwalten ohne Exchange?

Der Kunde nutzt Outlook mit verschiedenen IMAP- und Exchange-Postfächern.
Die Postfächer kommen aus der Cloud (nicht Microsoft) und sind ohne AD-Anbindung und ohne direkten Zugriff auf die Server.

Die PCs selber sind in einer Domäne mit Windows 10 Pro und Office 2016.
Es muss also eine Lösung sein, die lokal auf dem PC läuft und z.B. die Signaturen synchronisiert oder so.

Kennt Jemand so etwas? Gefunden habe ich sowas erstmal nicht.

Stefan

Content-ID: 8003838766

Url: https://administrator.de/forum/zentrale-signatur-in-outlook-ohne-exchange-8003838766.html

Ausgedruckt am: 21.12.2024 um 16:12 Uhr

Crusher79
Crusher79 31.07.2023 aktualisiert um 01:04:30 Uhr
Goto Top
Hallo,

ja klar. Einfach eine bauen, Platzhalter ersetzen und fertig. Gibt auch kommerzielle Tools. Ich mag die PS Variante.

Der Trickt ist eigentlich nur der Ort, wo die abgelegt werden. Beim Starten wird die dann automatisch geladen und verwendet. HTML, RTF und TEXT - diese 3 Arten muss man vorhalten. Da Word ein schlechter HTML Editor ist, nimm einen einfachen wie NVU oder ein Online Tool. Valides HTML ist ja schnell erstellt. Alternativ kannst du die Sig. auch in OL bauen und dies dann als Quelle verwenden.

In meinen Beispiel kommen die Daten aus einer CSV Datei. Es reicht also, wenn man mit den Windows Anmeldenamen dann die Zeile liest und verwendet.

ACHTUNG: Wurde arg mit der heissen Nadel gemacht!! Darum sehr redundant! Es ging hier darum, dass eine Persioin mehrere Positionen inne hat- on personal union....

Ist Kacke, aber es funktioniert. Kannst es ja verbessern. Wir nutzen nun für POS und Thunderbird eine aufgeräumte Version. ABER im Grunde funktioniert es. Auch wenn es SEHR, SEHR abenteuerlich und nicht schön gecoded ist !!!!

ALLES zum Ersetzen wurde mit ci_ eingeleitet! Sorg dafür, dass ci_name, ci_funktion etc. ZUSAMMENHÄNGEND zu finden ist. Und alles ist gut. ACHTUNG: RTF zerreisst mitunter durch Absätze u.ä. Texte! Schreibe "flüssig" damit im Tempalte die Suchbegriffe auch so zusammenhängend zu finden sind! Dann sollte es gehen.


Sorry - aber ich hab den Kram noch nicht hübscher gemacht. CSV ist mit vervierachung geschrieben. So dass in einer Zeile 4 versch. Signature Texte hinter einander stehen! Kannst du auch nur mit einer machen.


Function ReplaceText([string]$FileNameIn, [string]$SigNo)
{
$path = "C:\Users\Public\Download\OutlookSignature"  
If(!(test-path $path))
{
      New-Item -ItemType Directory -Force -Path $path
}

$User = $env:UserName
#$User = "company_ci_sig01" 
#$FileName = "company_ci_sig01" 
$FileName = $FileNameIn.Trim()
$User = $FileName
$FileExtension = "htm","rtf","txt"  
$Path = "C:\Users\Public\Download"  
$PathSignature = "$Path\OutlookSignature"  
$PathSignatureTemplates = "$Path\OutlookSignature\Templates"  
$PathSignatureTemplates = "\\filemaster2\public\outlook_templates"  
$PathSignatureUser = "$PathSignature\$User"  
$AppSignatures =$env:APPDATA + "\Microsoft\Signatures"  
$CSVQuelle = "\\filemaster2\public\outlook_templates\sig_source.csv"  
$Gruppe="1"  

IF ($FileName -eq "company_ci_sig01")  
{
New-Item -Path "$PathSignature\$User" -ItemType Container –Force  
foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureTemplates\$FileName.$Ext" "$PathSignatureUser\$FileName.$Ext"  
}

$satz=Import-CSV $CSVQuelle | where-object {$_.user -eq $env:UserName}

Write-Host $satz.ci_name1
Write-Host $FileName

(Get-Content "$PathSignatureUser\$FileName.rtf") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name1 `  
-replace "ci_mail", $satz.ci_mail1 `  
-replace "ci_phone", $satz.ci_phone1 `  
-replace "ci_fax", $satz.ci_fax1 `  
-replace "ci_function", $satz.ci_function1 `  
-replace '§',"\line " `  
} | Set-Content "$PathSignatureUser\$FileName.rtf"  

(Get-Content "$PathSignatureUser\$FileName.txt") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name1 `  
-replace "ci_mail", $satz.ci_mail1 `  
-replace "ci_phone", $satz.ci_phone1 `  
-replace "ci_fax", $satz.ci_fax1 `  
-replace "ci_function", $satz.ci_function1 `  
-replace '§',"`r`n" `  
} | Set-Content "$PathSignatureUser\$FileName.txt"  

(Get-Content "$PathSignatureUser\$FileName.htm") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name1 `  
-replace "ci_mail", $satz.ci_mail1 `  
-replace "ci_phone", $satz.ci_phone1 `  
-replace "ci_fax", $satz.ci_fax1 `  
-replace "ci_function", $satz.ci_function1 `  
-replace '§',"<br> " `  
} | Set-Content "$PathSignatureUser\$FileName.htm"  

foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureUser\$FileName.$Ext" "$AppSignatures\$User.$Ext"  
}


If((test-path "$AppSignatures\$FileName-Dateien\"))  
{
      Remove-Item "$AppSignatures\$FileName-Dateien\" -Recurse -Force  
}

Copy-Item -Path "$PathSignatureTemplates\$FileName-Dateien\" -Filter *.* -Destination "$AppSignatures\$FileName-Dateien\" –Recurse -Force  

}

IF ($FileName -eq "company_ci_sig02")  
{
New-Item -Path "$PathSignature\$User" -ItemType Container –Force  
foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureTemplates\$FileName.$Ext" "$PathSignatureUser\$FileName.$Ext"  
}

$satz=Import-CSV $CSVQuelle | where-object {$_.user -eq $env:UserName}

(Get-Content "$PathSignatureUser\$FileName.rtf") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name2 `  
-replace "ci_mail", $satz.ci_mail2 `  
-replace "ci_phone", $satz.ci_phone2 `  
-replace "ci_fax", $satz.ci_fax2 `  
-replace "ci_function", $satz.ci_function2 `  
-replace '§',"\line " `  
} | Set-Content "$PathSignatureUser\$FileName.rtf"  

(Get-Content "$PathSignatureUser\$FileName.txt") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name2 `  
-replace "ci_mail", $satz.ci_mail2 `  
-replace "ci_phone", $satz.ci_phone2 `  
-replace "ci_fax", $satz.ci_fax2 `  
-replace "ci_function", $satz.ci_function2 `  
-replace '§',"`r`n" `  
} | Set-Content "$PathSignatureUser\$FileName.txt"  

(Get-Content "$PathSignatureUser\$FileName.htm") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name2 `  
-replace "ci_mail", $satz.ci_mail2 `  
-replace "ci_phone", $satz.ci_phone2 `  
-replace "ci_fax", $satz.ci_fax2 `  
-replace "ci_function", $satz.ci_function2 `  
-replace '§',"<br> " `  
} | Set-Content "$PathSignatureUser\$FileName.htm"  

foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureUser\$FileName.$Ext" "$AppSignatures\$User.$Ext"  
}


If((test-path "$AppSignatures\$FileName-Dateien\"))  
{
      Remove-Item "$AppSignatures\$FileName-Dateien\" -Recurse -Force  
}

Copy-Item -Path "$PathSignatureTemplates\$FileName-Dateien\" -Filter *.* -Destination "$AppSignatures\$FileName-Dateien\" –Recurse -Force  

}

IF ($FileName -eq "company_ci_sig03")  
{
New-Item -Path "$PathSignature\$User" -ItemType Container –Force  
foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureTemplates\$FileName.$Ext" "$PathSignatureUser\$FileName.$Ext"  
}

$satz=Import-CSV $CSVQuelle | where-object {$_.user -eq $env:UserName}

(Get-Content "$PathSignatureUser\$FileName.rtf") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name3 `  
-replace "ci_mail", $satz.ci_mail3 `  
-replace "ci_phone", $satz.ci_phone3 `  
-replace "ci_fax", $satz.ci_fax3 `  
-replace "ci_function", $satz.ci_function3 `  
-replace '§',"\line " `  
} | Set-Content "$PathSignatureUser\$FileName.rtf"  

(Get-Content "$PathSignatureUser\$FileName.txt") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name3 `  
-replace "ci_mail", $satz.ci_mail3 `  
-replace "ci_phone", $satz.ci_phone3 `  
-replace "ci_fax", $satz.ci_fax3 `  
-replace "ci_function", $satz.ci_function3 `  
-replace '§',"`r`n" `  
} | Set-Content "$PathSignatureUser\$FileName.txt"  

(Get-Content "$PathSignatureUser\$FileName.htm") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name3 `  
-replace "ci_mail", $satz.ci_mail3 `  
-replace "ci_phone", $satz.ci_phone3 `  
-replace "ci_fax", $satz.ci_fax3 `  
-replace "ci_function", $satz.ci_function3 `  
-replace '§',"<br> " `  
} | Set-Content "$PathSignatureUser\$FileName.htm"  

foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureUser\$FileName.$Ext" "$AppSignatures\$User.$Ext"  
}


If((test-path "$AppSignatures\$FileName-Dateien\"))  
{
      Remove-Item "$AppSignatures\$FileName-Dateien\" -Recurse -Force  
}

Copy-Item -Path "$PathSignatureTemplates\$FileName-Dateien\" -Filter *.* -Destination "$AppSignatures\$FileName-Dateien\" –Recurse -Force  

}

IF ($FileName -eq "company_ci_sig04")  
{
New-Item -Path "$PathSignature\$User" -ItemType Container –Force  
foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureTemplates\$FileName.$Ext" "$PathSignatureUser\$FileName.$Ext"  
}

$satz=Import-CSV $CSVQuelle | where-object {$_.user -eq $env:UserName}

(Get-Content "$PathSignatureUser\$FileName.rtf") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name4 `  
-replace "ci_mail", $satz.ci_mail4 `  
-replace "ci_phone", $satz.ci_phone4 `  
-replace "ci_fax", $satz.ci_fax4 `  
-replace "ci_function", $satz.ci_function4 `  
-replace '§',"\line " `  
} | Set-Content "$PathSignatureUser\$FileName.rtf"  

(Get-Content "$PathSignatureUser\$FileName.txt") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name4 `  
-replace "ci_mail", $satz.ci_mail4 `  
-replace "ci_phone", $satz.ci_phone4 `  
-replace "ci_fax", $satz.ci_fax4 `  
-replace "ci_function", $satz.ci_function4 `  
-replace '§',"`r`n" `  
} | Set-Content "$PathSignatureUser\$FileName.txt"  

(Get-Content "$PathSignatureUser\$FileName.htm") | Foreach-Object {  
$_`
-replace "ci_name", $satz.ci_name4 `  
-replace "ci_mail", $satz.ci_mail4 `  
-replace "ci_phone", $satz.ci_phone4 `  
-replace "ci_fax", $satz.ci_fax4 `  
-replace "ci_function", $satz.ci_function4 `  
-replace '§',"<br> " `  
} | Set-Content "$PathSignatureUser\$FileName.htm"  

foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureUser\$FileName.$Ext" "$AppSignatures\$User.$Ext"  
}


If((test-path "$AppSignatures\$FileName-Dateien\"))  
{
      Remove-Item "$AppSignatures\$FileName-Dateien\" -Recurse -Force  
}

Copy-Item -Path "$PathSignatureTemplates\$FileName-Dateien\" -Filter *.* -Destination "$AppSignatures\$FileName-Dateien\" –Recurse -Force  

}
}

$satz=Import-CSV $CSVQuelle | where-object {$_.user -eq $env:UserName}

$eins=$satz.ci_name1
$zwei=$satz.ci_name2
$drei=$satz.ci_name3
$vier=$satz.ci_name4

If($eins)
{
      $FileNameIn="company_ci_sig01"  
      ReplaceText([string]$FileNameIn)
}



If($zwei)
{
      $FileNameIn="company_ci_sig02"  
      ReplaceText([string]$FileNameIn)
}

If($drei)
{
      $FileNameIn="company_ci_sig03"  
      ReplaceText([string]$FileNameIn)
}

If($vier)
{
      $FileNameIn="company_ci_sig04"  
      ReplaceText([string]$FileNameIn)
}
Crusher79
Crusher79 31.07.2023 aktualisiert um 01:29:57 Uhr
Goto Top
Google liefert auch vieles. Aber mir hat das oben gereicht.

https://github.com/captainqwerty/AutomatedOutlookSignature/blob/master/O ...

https://office365itpros.com/2020/02/19/updating-outlook-signature-powers ...


Hier musst du aber ggf. auf registry achten. Der Pfad ist dann je Office Version anders! HKCU.


Ich bevorzuge immer die Trennung zwischen Code und Templates! Man könnte auch alles in ein PS packen, was HTML Dateien generiert.

Ich würde einfach eine Signagut erstellen. Schau dir dann die Dateien - eisnchl. Bilddateien - auf der Festplatte an. Dann wird es klarer. Ersetze alles was du dynamisch ändern willst durch Platzhalter: ci_

Datenquelle kann alles ein CSV, XML, SQL oder AD Query.

Leider hab ich die CSV nicht zur Hand. Die sieht aber ungefähr so aus:

user,ci_name1,ci_mail1,ci_phone1,ci_fax1,ci_function1,ci_name2,ci_mail2,ci_phone2,ci_fax2,ci_function2,ci_name3,ci_mail3,ci_phone3,ci_fax3,ci_function3,ci_name4,ci_mail4,ci_phone4,ci_fax4,ci_function4
crusher,Herr Dr. Dr. Müller,mueller@contoso.com,4546,6256,Arzt§den die Frauen vertrauen,,,,,,,,,,,,,,,,,

Arzt§den die Frauen vertrauen

Was ist das??? Nun da wir teils Funktionen hatten, die nicht in eine Zeile passten brauchte ich einen Break. Eine Variante wäre z.B. § zu nehmen - da es sonst nicht verwendet wird.

HTML: <br />
RTF: \line
TEXT: `r`n

Damit lassen sich auch Umbrüche realisieren.

Mehrere CSV Zeilen einen User zu zuweisen ginge ggf. auch anders. Ich hab hier Excel in der horiz. lieber erweitet. Name ist vlt. unnötig, da sich für eine Person die auch Datenschutzbeauftragter ist nur die Funktion ändert. So wäre es abrer möglich, mehrere Signaturen zu hinterlegen. Ist Geschmackssache. Hier sind also - wenn vorhanden - bis zu 4 Siganturen möglich.


Hoffe es reicht so als kleiner ansporn.