Pickup-Ordner

In vielen Implementierungen konnten wir erkennen, dass oft von den jeweiligen Administratoren der Wunsch geäußert wird, einfache Abfrageergebnisse, Logs oder Berichte per Mail zu versenden. Wir greifen zu diesem Zweck gerne auf eine Funktion aus dem letzten Jahrtausend zurück. Zumindest dann, wenn unser Kunde Microsoft Exchange als Mailserver verwendet. Konkret sprechen wir hier über den Pickup-Ordner. Alle in diesen Ordner abgelegten EML-Dateien werden zeitnah über Exchange dem entsprechenden Empfänger zugesendet. Eine EML-Datei kann man z.B. auf alten Outlook-Versionen heraus direkt erzeugen. Hierzu muss nur die jeweilige Mail als Datei gesichert werden. Alternativ ist es möglich diese Datei im Rahmen der Programmierung zu erzeugen. Da dies unsere bevorzugte Arbeitsweise ist, werden wir selbige an dieser Stelle erläutern.

Ablageort des Pickup-Ordners

Zunächst gilt es den Speicherort des Pickup-Ordners zu ermitteln. Dank PowerShell lässt sich der Ort leicht ermitteln und in einer Variablen speichern.

Code

#Bis Exchange 2010:
$Zielpfad = (Get-TransportServer).PickupDirectoryPath

#Ab Exchange 2013:
$Zielpfad = (Get-TransportService).PickupDirectoryPath

Dateierstellung

Die Erstellung der benötigten Datei darf nicht im Pickup-Ordner direkt erfolgen. Exchange würde zeitnah einen Versand der Datei versuchen. Gelingt dieser, ist es konsequenter Weise nicht mehr möglich die Datei mit Inhalt zu befüllen. Die Datei im Beispielcode wird auf Laufwerk D: erzeugt. Grundsätzlich kann mit "New-Item -Path D:\Test1.eml -ItemType File" eine leere Datei erzeugt werden. Wir halten dies an dieser Stelle nicht für nötig, da "Add-Item" automatisch eine neue Datei erzeugt, soweit selbige noch nicht vorhanden ist. Natürlich sollte für einen reibungslosen Ablauf des Codes die Existenz der Datei überprüft und, sofern ungewollt vorhanden, selbige gelöscht werden.

Code

$TestPfad = "D:\Test.eml"
If (Test-Path -Path $TestPfad) {Remove-Item -Path $TestPfad}
Add-Content -Path $TestPfad -Value "FROM: TessaTest@TestDomain.LAN"

Aufbau des Dateiinhaltes

Im obigen Code ist die erste Zeile des Inhaltes bereits erkennbar. Der Absender der Nachricht ist bereits definiert. Im folgenden ist der Empfänger und das Betreff (Subject) festzulegen. Ein aktuelles Datum im Betreff kann eine spätere Suche erleichtern. Der Code "`r`n" sorgt für einen entsprechenden Zeilenumbruch, was die Lesbarkeit der EML-Datei in einem Editor verbessert. Adressierungen für Kopien und Blindkopien sind analog mit "CC:" und "BCC:" nutzbar.

Code

$BerichtDatum = Get-Date
Add-Content -Path $TestPfad -Value "TO: M@il-iT.de"
Add-Content -Path $TestPfad -Value "SUBJECT: Bericht vom $BerichtDatum`r`n"

Weiterer Inhalt

Nun kann die Datei weiter mit Inhalten z.B. via "Add-Content" gefüllt werden. Als Beispiel verwenden wir ein einfaches PING-Ergebnis.

Code

$DNSMS = TestServer.TestDomain.LAN
Ping $DNSMS -n 1 -w 100 >$null
If ($lastexitcode -eq 0){"Server $DNSMS ist erreichbar" | Add-Content -Path $TestPfad}
else {"Server $DNSMS ist nicht erreichbar" | Add-Content -Path $TestPfad}

Versand

Zum Abschluss muss nur noch der Versand der Datei erledigt werden. Wer keine manuelle Verschiebung der Datei durchführen möchte, erledigt diese Aufgabe direkt im Skript.

Code

Move-Item -Path $TestPfad -Destination $Zielpfad

  •  il-it Services GmbH
  • Hier gelangen Sie auf die StartseiteHome
  • Rücksprung auf die vorherige Seitezurück
  • Nur wo Impressum drauf steht, ist auch Impressum drin... 
  • Unsere Kontaktdaten und ein Kontaktformular finden Sie hier. 
  • Wer suchet der findet...auf Basis einer Volltextsuche. 
  • Unser Team, Profile, Zertifizierungen und Kontaktdaten. 
  • Absolut sichere Referenzen. 
  • SOS, wenn es in der IT wieder einmal "brennt"... 
  • Aufruf dieser HilfeinformationBedeutung anzeigen
© 2013 - 2021 il-it Services GmbH