Outlook-E-Mail-Vorlagen einfach mit PowerShell öffnen und verwalten

Outlook VBA

PowerShell bietet eine einfache und flexible Alternative zu VBA oder Outlooks internem Vorlagendialog, um E-Mail-Vorlagen (*.OFT-Dateien) zu öffnen und dabei den Absender flexibel zu bestimmen. Der folgende Artikel erläutert Schritt für Schritt, wie dies mit PowerShell umgesetzt werden kann.

Warum PowerShell statt VBA?

Outlook-Nutzer kennen das Problem: Die Verwaltung und Auswahl von E-Mail-Vorlagen mittels der Standarddialoge kann unübersichtlich und zeitraubend sein. Während VBA bereits Abhilfe schafft, bietet PowerShell zusätzliche Flexibilität, etwa durch direkten Zugriff auf das Dateisystem und einfache Anpassungsmöglichkeiten.

Vorbereitung der PowerShell-Umgebung

Damit das PowerShell-Skript auf dem Rechner ausgeführt werden kann, muss zunächst die Ausführungsrichtlinie entsprechend gesetzt werden:

Set-ExecutionPolicy RemoteSigned

Dieser Befehl muss in PowerShell mit Administratorrechten ausgeführt werden.

PowerShell-Skript: E-Mail-Vorlagen öffnen und Absender ändern

Das folgende PowerShell-Skript ermöglicht das Öffnen einer Outlook-Vorlage über einen Datei-Explorer-Dialog und setzt automatisch den gewünschten Absender:

# Konsolenfenster ausblenden
Add-Type -Name Window -Namespace Console -MemberDefinition '
[DllImport("Kernel32.dll")]
public static extern IntPtr GetConsoleWindow();

[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow);
'

function Hide-Console {
    $consolePtr = [Console.Window]::GetConsoleWindow()
    [Console.Window]::ShowWindow($consolePtr, 0)
}
Hide-Console

# Pfade und Absender anpassen
$templatepath = 'C:\Pfad\zu\Vorlagen\'
$sendFrom ='absender@domain.de'

Add-Type -AssemblyName System.Windows.Forms
$olApp = new-object -comobject outlook.application

$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{
InitialDirectory = $templatepath
}

$null = $FileBrowser.ShowDialog()
$SelectedFile = $FileBrowser.FileName

function Invoke-SetProperty {
    param([__ComObject] $Object, [String] $Property, $Value)
    [Void] $Object.GetType().InvokeMember($Property,"SetProperty",$NULL,$Object,$Value)
}

$account = $olapp.Session.Accounts.Item($sendFrom)
$oMail = $olApp.CreateItemFromTemplate($SelectedFile)

# Absender ändern
Invoke-SetProperty -Object $oMail -Property "SendUsingAccount" -Value $account
$oMail.Display()

Verwendung von Proxy-Adressen

Möchten Sie eine sekundäre Adresse (Proxy-Adresse) verwenden, kommentieren Sie die Zeile mit $account aus und verwenden stattdessen SentOnBehalfOfName:

#$account = $olapp.Session.Accounts.Item($sendFrom)
$oMail = $olApp.CreateItemFromTemplate($SelectedFile)
Invoke-SetProperty -Object $oMail -Property "SentOnBehalfOfName" -Value $sendFrom

Öffnen von Vorlagen ohne Änderung der Absenderadresse

Soll die Absenderadresse unverändert bleiben, genügt folgendes vereinfachtes Skript:

$templatepath = 'C:\Pfad\zu\Vorlagen\meinevorlage.oft'
Invoke-Item $templatepath

PowerShell über eine Batch-Datei starten

Um die PowerShell-Ausführung komfortabler zu gestalten, kann eine Batch-Datei erstellt werden:

cmd /c start /min "" powershell.exe -WindowStyle hidden -f "C:\Pfad\zu\powershell\skript.ps1"

Speichern Sie diese Datei mit der Endung .bat und starten Sie sie bequem per Doppelklick.

Kompatibilitätshinweis

Die vorgestellten PowerShell-Skripte funktionieren nicht mit der webbasierten Version von Outlook oder dem „neuen Outlook“ hinsichtlich des Änderns der Absenderadresse, da hierfür eine direkte Interaktion mit der Outlook-Desktop-Anwendung erforderlich ist. Das reine Öffnen von Vorlagen funktioniert jedoch problemlo

-

Vorheriger Artikel Nächster Artikel

Hat Ihnen der Beitrag gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert