catao 11 Geschrieben 11. Dezember 2012 Melden Teilen Geschrieben 11. Dezember 2012 Hallo Zusammen, seit Stunden versuche ich eine Lösung zu finden und dennoch komme ich nicht weiter. Ausgangssituation: Ein Kunde will mit dem GFI Faxmaker seine Faxe versenden. Soweit auch kein Problem. Da es jedoch gewisse Umstände bei ihm gibt, weshalb die Faxe via XMLAPI versand werden sollen, fangen die Probleme an. Eine XML-Datei und das zugehörige PDF-Dokument werden in einem Ordner abgelegt und vom Faxmaker erkannt und letztlich verarbeitet. Das Problem an der Sache ist, dass der Absender/User keine Benachrichtigung erhält, ob der Versand erfolgreich war oder gescheitert ist. Sobald man seine Faxaufträge via XMLAPI auf die Reise schickt, werden keine Benachrichtigungen versandt. Alle anderen Wege funktionieren wie der Kunde es möchte. GFI schreibt zu diesem Verhalten in seiner Doku eigentlich nur, dass man sich Lösungen von drittanbietern bedienen möchte. Also habe ich nach einer Lösung gesucht, mit der ich zum einen das Fax-Verzeichnis überwachen kann und die Benachrichtigungen dann über diesen Weg an den User bringe. Alles was ich finden konnte war ein ungefährer Weg via Powershell, wo ich nun auch beim Thema wäre. Meine XML-Datei sieht wie folgt aus: <?xml version="1.0" encoding="utf-8"?> <faxmakerstatus><fax><errorcode>0</errorcode><description>********************************************************* FAXSENDEBERICHT ********************************************************* Betreff: Erfolgreich: Dies ist ein Testfax (Fax gesendet an 047110815) Absender: Vorname Nachname Absender E-Mail: Benutzer@Firma.de Status: Sent Datum/Uhrzeit: 11.12.2012 18:45:32 Geschwindigkeit: 14400 bps Verbindungsdauer: 01:48 Seiten: 1 Seiten gesamt: 1 Auflösung: Normal Remote-ID: +49 08154711 Leitungsnummer: 0 Wiederholungsversuche: 1 Beschreibung: Fax erfolgreich verschickt : Success ********************************************************* </description><uid>3a5a90s7de3g20k9y4d5e7e6fse28se5e097</uid><faxfile>C:\FaxPickup\20121211_184253_00015.pdf</faxfile><recipient>047110815</recipient></fax></faxmakerstatus> Mein Powershell Script sie so aus: $BodyText ="" $BaseFile=[xml]( Get-Content C:\gfixml\testfax.xml.status ) #$Att_File = new-object Net.Mail.Attachment($FaxDoc) $XMLPath = $BaseFile.SelectNodes("/faxmakerstatus/*") foreach ($element in $XMLPath) { $BodyText = $BodyText + " "+$element.description #$FaxDoc = $FaxDoc + " "+$element.faxfile } #[system.Windows.Forms.MessageBox]::Show("$BodyText") $msg=new-Object Net.Mail.MailMessage $smtp=new-object Net.Mail.SmtpClient("192.168.100.100") $msg.From="faxmaker@firma.de" $msg.To.Add("benutzer@firma.de") $msg.subject="Fax Statusbericht" $msg.body="$BodyText" #$msg.Attachments.Add($FaxDoc) $smtp.send($msg) Mein Problem ist dass ich beispielsweise die Zeile "Betreff: Erfolgreich: Dies ist ein Testfax (Fax gesendet an 047110815)" (Betreff: würde ich dabei gern weglassen) nicht aus dem XML-Dokument ausgelesen bekommen, um es beim $msg.subject einzusetzen. Die Absender E-Mail Adresse (siehe XML-Dokument) muss ich ebenso in das Script hineinbekommen usw. Mit dem vorstehenden Powershell script habe ich es zumindest soweit geschafft das eine E-Mail an den fest hinterlegten Empfänger gesandt wird. Zitieren Link zu diesem Kommentar
catao 11 Geschrieben 11. Dezember 2012 Autor Melden Teilen Geschrieben 11. Dezember 2012 In dem Body steht dann: *********************************************************FAXSENDEBERICHT ********************************************************* Betreff: Erfolgreich: Dies ist ein Testfax (Fax gesendet an 047110815) Absender: Vorname Nachname Absender E-Mail: Benutzer@Firma.de Status: Sent Datum/Uhrzeit: 11.12.2012 18:45:32 Geschwindigkeit: 14400 bps Verbindungsdauer: 01:48 Seiten: 1 Seiten gesamt: 1 Auflösung: Normal Remote-ID: +49 08154711 Leitungsnummer: 0 Wiederholungsversuche: 1 Beschreibung: Fax erfolgreich verschickt : Success ********************************************************* Abgesehen davon dass ich die einzelnen Informationen bzw. Teile aus der XML nicht verwenden kann, habe ich noch das Problem dass das PDF-Dokument mit jedem ausführen des Scriptes immer weiter mit dem Pfad und dem Dateinamen rangehängt wird. Dass das nicht funktioniert, bleibt dabei natürlich nicht aus. Komme ich zu meiner heutigen Preisfrage: War jemand von euch schon einmal in einer solchen Situation mit dem Faxmaker und hat eine Idee oder habt ihr Vorschläge wie ich auf Basis meiner Variante weiterkomme?! Vielen Dank schon einmal im Voraus! Rene Zitieren Link zu diesem Kommentar
ducke 11 Geschrieben 13. Dezember 2012 Melden Teilen Geschrieben 13. Dezember 2012 Interessantes Problem :) Mit ein bisschen RegEx Magic kann man da schon was machen. Hier mal mein Vorschlag: $faxxml = [xml](Get-Content d:\temp\testfax.xml) $result = @{} $regex = [regex]"(?sm)^(?<key>(\b\w+[\s-/]\b[\w-]+|\b\w+)):\s(?<value>.+?)(\n|$)" $text = $faxxml.faxmakerstatus.fax.description foreach ($item in $regex.Matches($text)) { $result.Add($item.Groups["key"].value,$item.Groups["value"].value) } $MailMessage = @" To = $($result["Absender E-Mail"]) From = faxmaker@firma.de Subject = $($result["Betreff"]) Smtpserver = smtpserver "@ $msgparm = ConvertFrom-StringData $MailMessage Send-MailMessage @msgparm -Body ($result | ft -Wrap | Out-String) Zum Code selber. Ich schnappe mir die Description und jage einen Regex drüber. Damit befülle ich ein Hashtable und kann dann mit "$result["<key>"] an die Werte dran. Dann nehme ich einen Here-String ($mailmessage) und befülle die notwendigen Parameter für das Versenden der Mail. Als nächstes wird der Here-String noch in ein Hashtable umgewandelt (ConvertFrom-StringData) und an der Befehl Send-MailMessage übergeben. Den Body mache ich getrennt vom Hashtable. Alles klar soweit? ;) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.