PDF Dateien aus Verzeichnis automatisch per Email versenden
Hallo Leute ich habe mal wieder ein Problem:
täglich kommen mehrere PDF Dateien in ein Verzeichnis und dieses muss ausgelesen werden und die PDF in 10 minuten Abständen Per Email an eine Andresse gesendet werden.
das Ganze findet auf einem SBS 2011 Server statt.
gibt es ein Skript dass ich per Aufgabenplanung starten kann damit dieses die Pdf dateien versendet.
auf dem Server läuft wie anders bei einem SBS gedacht Exchange und es ist auch Outlook 2007 installiert.
könnt ihr mir da ein Programm nennen oder evtl auch ein Skript.
Ich habe das Internet schon mal ein bisschen durchforscht allerdings nix richtiges gefunden.
Ich danke schon jetzt für eure Hilfe
täglich kommen mehrere PDF Dateien in ein Verzeichnis und dieses muss ausgelesen werden und die PDF in 10 minuten Abständen Per Email an eine Andresse gesendet werden.
das Ganze findet auf einem SBS 2011 Server statt.
gibt es ein Skript dass ich per Aufgabenplanung starten kann damit dieses die Pdf dateien versendet.
auf dem Server läuft wie anders bei einem SBS gedacht Exchange und es ist auch Outlook 2007 installiert.
könnt ihr mir da ein Programm nennen oder evtl auch ein Skript.
Ich habe das Internet schon mal ein bisschen durchforscht allerdings nix richtiges gefunden.
Ich danke schon jetzt für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 225910
Url: https://administrator.de/contentid/225910
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
40 Kommentare
Neuester Kommentar
Hallo,
also Outlook hat eigentlich nichts auf nem Server verloren, vor allem wenn ein Exchange drauf ist. Bei älteren Versionen hat sich das sehr schön beiden können.
Du könntest das mit Blat.exe lösen.
PDF-Datei mit Blat versenden
also Outlook hat eigentlich nichts auf nem Server verloren, vor allem wenn ein Exchange drauf ist. Bei älteren Versionen hat sich das sehr schön beiden können.
Du könntest das mit Blat.exe lösen.
PDF-Datei mit Blat versenden
Hi,
hatte dazu schon mal ein ähnliches Script mit AutoIT geschrieben:
Hilfe!! Script erstellen, das 2 Dateien prüfen soll und dann als email zb. mit blat versenden.
ließe sich einfach an deine Bedürfnisse anpassen. Es benötigt keine externen Tools zum Versenden per Mail.
Ähnliche Scripte in VBS und Powershell findest du hier:
Suche eine Batch,Tool oder Programm zum umbenennen von Dateien
Hier muss dann nur noch die Mail-Routine ergänzt werden. Ist aber auch kein Problem, kann ich dir gerne anpassen.
Grüße Uwe
hatte dazu schon mal ein ähnliches Script mit AutoIT geschrieben:
Hilfe!! Script erstellen, das 2 Dateien prüfen soll und dann als email zb. mit blat versenden.
ließe sich einfach an deine Bedürfnisse anpassen. Es benötigt keine externen Tools zum Versenden per Mail.
Ähnliche Scripte in VBS und Powershell findest du hier:
Suche eine Batch,Tool oder Programm zum umbenennen von Dateien
Hier muss dann nur noch die Mail-Routine ergänzt werden. Ist aber auch kein Problem, kann ich dir gerne anpassen.
Grüße Uwe
Zitat von @heiser89:
Was ich noch erwähnen muss ist: wenn sich keine PDF Datei in dem Ordner befindet, dann soll auch keine Email raus gehen.
Können das diese Skripte auch???
Logisch !Was ich noch erwähnen muss ist: wenn sich keine PDF Datei in dem Ordner befindet, dann soll auch keine Email raus gehen.
Können das diese Skripte auch???
So, hier hast du etwas was du benutzen kannst:
Du besorgst dir BLAT und speicherst es in einem Verzeichnis. Dann gibst du in Zeile 1 den Pfad zu den PDF-Dateien an, in Zeile 2 den Pfad in den die versendeten PDF-Dateien verschoben werden sollen und in Zeile 3 den Pfad zur BLAT.EXE an. In Zeile 17 passt du dann die Parameter zum Verschicken der Mail (Mailserver, Username, Passwort,Betreff, etc). Falls du die verschickten PDF-Dateien lieber löschen möchtest kannst du die entsprechend kommentierten Zeilen im Script auskommentieren und die für den Verschiebe-Vorgang auskommentieren.
Grüße Uwe
Du besorgst dir BLAT und speicherst es in einem Verzeichnis. Dann gibst du in Zeile 1 den Pfad zu den PDF-Dateien an, in Zeile 2 den Pfad in den die versendeten PDF-Dateien verschoben werden sollen und in Zeile 3 den Pfad zur BLAT.EXE an. In Zeile 17 passt du dann die Parameter zum Verschicken der Mail (Mailserver, Username, Passwort,Betreff, etc). Falls du die verschickten PDF-Dateien lieber löschen möchtest kannst du die entsprechend kommentierten Zeilen im Script auskommentieren und die für den Verschiebe-Vorgang auskommentieren.
VBS-Script
FOLDER_PDF = "C:\temp\source"
FOLDER_MOVE = "C:\Temp\target"
PATH_BLAT = "D:\Download\Blat\blat.exe"
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
strPDFs = ""
For Each file In fso.GetFolder(FOLDER_PDF).Files
If LCase(fso.GetExtensionName(file.Path)) = "pdf" Then
If strPDFs <> "" Then
strPDFs = strPDFs & ",""" & file.Path & """"
Else
strPDFs = """" & file.Path & """"
End If
End If
Next
If strPDFs <> "" Then
sendNewMailViaBlat "sender@mail.de","empfänger@mail.de","Neue PDFs eingetroffen","Im Anhang Ihre PDFs",strPDFs,"smtp.mailserver.de","SMTP-USERNAME","SMTP-PASSWORD"
'PDFs in einen anderen Ordner verschieben
For Each pdf In Split(strPDFs,",",-1,1)
pdf = Replace(pdf,"""","",1,-1,1)
fso.MoveFile pdf , FOLDER_MOVE & "\"
Next
'Alternativ Wenn die Dateien gelöscht werden sollen:
' For Each pdf In Split(strPDFs,",",-1,1)
' pdf = Replace(pdf,"""","",1,-1,1)
' fso.DeleteFile pdf,True
' Next
End If
Function sendNewMailViaBlat(strFrom,strTo,strSubject,strBody,strAttachments,strSMTPServer,strSMTP_USER,strSMTP_PASS)
Set objShell = CreateObject("WScript.Shell")
objShell.Run """" & PATH_BLAT & """" & " -subject """ & strSubject & """ -body """ & strBody & """ -to " & strTo & " -f " & strFrom & " -server " & strSMTPServer & " -u """ & strSMTP_USER & """ -pw """ & strSMTP_PASS & """ -attach " & strAttachments ,0,True
set objShell = Nothing
End Function
Zitat von @modernsolution:
Hallo ich kann dieses Script auch sehr gut gebrauchen .... Wichtig wäre für mich das die pdf Dateien einzeln verschickt
werden.... Es dürfen nicht mehrere pdf Dateien in einer Email angehangen werden.....
Hallo ich kann dieses Script auch sehr gut gebrauchen .... Wichtig wäre für mich das die pdf Dateien einzeln verschickt
werden.... Es dürfen nicht mehrere pdf Dateien in einer Email angehangen werden.....
FOLDER_PDF = "C:\temp\source"
FOLDER_MOVE = "C:\Temp\target"
PATH_BLAT = "D:\Download\Blat\blat.exe"
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
For Each file In fso.GetFolder(FOLDER_PDF).Files
If LCase(fso.GetExtensionName(file.Path)) = "pdf" Then
sendNewMailViaBlat "sender@mail.de","empfänger@mail.de","Neue PDFs eingetroffen","Im Anhang Ihre PDFs", file.Path,"smtp.mailserver.de","SMTP-USERNAME","SMTP-PASSWORD"
fso.MoveFile file.Path , FOLDER_MOVE & "\"
End If
Next
Function sendNewMailViaBlat(strFrom,strTo,strSubject,strBody,strAttachments,strSMTPServer,strSMTP_USER,strSMTP_PASS)
Set objShell = CreateObject("WScript.Shell")
objShell.Run """" & PATH_BLAT & """" & " -subject """ & strSubject & """ -body """ & strBody & """ -to " & strTo & " -f " & strFrom & " -server " & strSMTPServer & " -u """ & strSMTP_USER & """ -pw """ & strSMTP_PASS & """ -attach """ & strAttachments & """" ,0,True
set objShell = Nothing
End Function
Grüße Uwe
Hi Uwe danke für die schnelle Reaktion .... Über Nacht ist mir noch eine bessere Idee gekommen ... Sry das mir das nun erst einfällt. :/
Super wäre es wenn das Script erst die Dateien einzeln an belege@modernsolution-Shop.de schickt dann alle pdfs des Ordners sowohl an info@modernsolution.de sowie an xxx@xxx.de schickt... Super wäre es wenn ich eine vorgefertigte Nachricht wie "anbei erhalten sie alle Rechnung" an die beiden Adressen wo alle pdfs auf einmal hingehen anheften kann. Danach soll er einen Ordner mit dem aktuellen Datum und Uhrzeit erstellen und die pdfs dort rein verschieben ... bekommst du das hin?
Dank dir schon mal im Vorfeld
Lg Timo
Super wäre es wenn das Script erst die Dateien einzeln an belege@modernsolution-Shop.de schickt dann alle pdfs des Ordners sowohl an info@modernsolution.de sowie an xxx@xxx.de schickt... Super wäre es wenn ich eine vorgefertigte Nachricht wie "anbei erhalten sie alle Rechnung" an die beiden Adressen wo alle pdfs auf einmal hingehen anheften kann. Danach soll er einen Ordner mit dem aktuellen Datum und Uhrzeit erstellen und die pdfs dort rein verschieben ... bekommst du das hin?
Dank dir schon mal im Vorfeld
Lg Timo
Über Nacht ist mir noch eine bessere Idee gekommen
Das nächste mal bitte direkt so wie es gewünscht ist, das ist hier ja kein Wunschkonzert!Mit den beiden obigen Threads hättest du dir das aber eigentlich auch einfach zusammenkopieren können.
Ausnahmsweise drück ich nochmal ein Auge zu weil du hier neu bist::
' -------------------------
'Ordner in dem die PDF Dateien liegen
FOLDER_PDF = "C:\temp\source"
' Ordner in dem Unterordner mit Datum erstellt werden und die PDFs dort rein verschoben werden
FOLDER_MOVE = "C:\Temp\target"
'Pfad zur BLAT.exe
PATH_BLAT = "D:\Ordner\Blat\blat.exe"
' Mailserverdaten:
SMTP_SENDER = "user@domain.de"
SMTP_SERVER = "smtp.mailserver.de"
SMTP_USERNAME = "USERNAME"
SMTP_PASSWORD = "PASSWORD"
' -------------------------
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
strPDFs = ""
For Each file In fso.GetFolder(FOLDER_PDF).Files
If LCase(fso.GetExtensionName(file.Path)) = "pdf" Then
'für jedes PDF eine einzelene Mail veschicken
sendNewMailViaBlat SMTP_SENDER,"belege@modernsolution-Shop.de","Neuer Beleg","Im Anhang finden sie den Beleg als PDF", """" & file.Path & """",SMTP_SERVER,SMTP_USERNAME,SMTP_PASSWORD
If strPDFs <> "" Then
strPDFs = strPDFs & ",""" & file.Path & """"
Else
strPDFs = """" & file.Path & """"
End If
End If
Next
If strPDFs <> "" Then
' Alle PDFs in einer Mail zusammenfassen und verschicken
sendNewMailViaBlat SMTP_SENDER,"info@modernsolution.de,xxx@xxx.de","Neue PDFs eingetroffen","Im Anhang Ihre PDFs",strPDFs,SMTP_SERVER,SMTP_USERNAME,SMTP_PASSWORD
'PDFs in einen Ordner mit dem aktuellen Datum verschieben
For Each pdf In Split(strPDFs,",",-1,1)
pdf = Replace(pdf,"""","",1,-1,1)
dateFolder = FOLDER_MOVE & "\" & FormatDateTime(Now(),vbShortDate)
If Not fso.FolderExists(dateFolder) Then
fso.CreateFolder(dateFolder)
End If
fso.MoveFile pdf , dateFolder & "\"
Next
End If
Function sendNewMailViaBlat(strFrom,strTo,strSubject,strBody,strAttachments,strSMTPServer,strSMTP_USER,strSMTP_PASS)
Set objShell = CreateObject("WScript.Shell")
objShell.Run """" & PATH_BLAT & """" & " -subject """ & strSubject & """ -body """ & strBody & """ -to " & strTo & " -f " & strFrom & " -server " & strSMTPServer & " -u """ & strSMTP_USER & """ -pw """ & strSMTP_PASS & """ -attach " & strAttachments ,0,True
set objShell = Nothing
End Function
Hi Uwe,
entschuldige bitte meine Ungeduld und vielen Dank noch einmal für deine Antwort.
Nun habe ich den Quellcode in eine TXT gepackt und umgeschrieben..... wie kann ich diese denn nun ausführen lassen ?
Habe früher alles immer per .bat datei gemacht und dann mit dem windows aufgabenplaner täglich gestartet
Lg timo
entschuldige bitte meine Ungeduld und vielen Dank noch einmal für deine Antwort.
Nun habe ich den Quellcode in eine TXT gepackt und umgeschrieben..... wie kann ich diese denn nun ausführen lassen ?
Habe früher alles immer per .bat datei gemacht und dann mit dem windows aufgabenplaner täglich gestartet
Lg timo
Hallo colinardo,
das script ist echt der hammer, danke dafür.
ich hatte eine kleine erweiterung die mir o nicht gelingt in dein script einzubauen.
Ich habe einen Ordner in dem liegen viele PDF´s immer mit den dateinamen 0001MM.pdf die 4 Stellige zahl ist fortlaufend und die Buchstaben sind 2 oder 3 Stellig.
Kann man irgendwie das Kürzel auslesen und dann anhand des kürzel die email adresse vergeben.
Also zum beispiel die datei 0001MM.pdf soll an markus müller versendet werden und die datei 0002TB.pdf soll an Thomas Beyer versendet werden.
Ich hoffe du kannst mir helfen.
Vielen Dank
das script ist echt der hammer, danke dafür.
ich hatte eine kleine erweiterung die mir o nicht gelingt in dein script einzubauen.
Ich habe einen Ordner in dem liegen viele PDF´s immer mit den dateinamen 0001MM.pdf die 4 Stellige zahl ist fortlaufend und die Buchstaben sind 2 oder 3 Stellig.
Kann man irgendwie das Kürzel auslesen und dann anhand des kürzel die email adresse vergeben.
Also zum beispiel die datei 0001MM.pdf soll an markus müller versendet werden und die datei 0002TB.pdf soll an Thomas Beyer versendet werden.
Ich hoffe du kannst mir helfen.
Vielen Dank
Hallo mcknife,
Hier ein Beispiel:
Grüße Uwe
das script ist echt der hammer, danke dafür.
schön wenn's dir hilft, ansonsten nichts besonderes Kann man irgendwie das Kürzel auslesen und dann anhand des kürzel die email adresse vergeben.
sicher, du hinterlegst die Mailadressen mit Ihren Kürzeln in einem Dictionary-Objekt dann extrahiert man die Buchstaben und wählt den Eintrag aus dem Dictionary für die Mailadresse.Hier ein Beispiel:
FOLDER_PDF = "C:\temp\source"
FOLDER_MOVE = "C:\temp\target"
PATH_BLAT = "D:\Download\Blat\blat.exe"
' Dictionary mit den Mailadressen und Kürzeln erstellen
Set oDic = CreateObject("scripting.dictionary")
oDic.Add "MM","maxmuster@domain.de"
oDic.Add "HM","helenemuster@domain.de"
Set fso = CreateObject("Scripting.Filesystemobject")
For Each file In fso.GetFolder(FOLDER_PDF).Files
If LCase(fso.GetExtensionName(file.Path)) = "pdf" Then
'Kuerzel ermitteln
kuerzel = UCase(Mid(fso.GetBaseName(file.Path),5))
' Wenn Kürzel im Dictionary existiert dann sende Mail
If oDic.Exists(kuerzel) Then
strMail = oDic.Item(kuerzel)
sendNewMailViaBlat "sender@mail.de",strMail,"Neue PDFs eingetroffen","Im Anhang Ihre PDFs", file.Path,"smtp.mailserver.de","SMTP-USERNAME","SMTP-PASSWORD"
fso.MoveFile file.Path , FOLDER_MOVE & "\"
End If
End If
Next
Function sendNewMailViaBlat(strFrom,strTo,strSubject,strBody,strAttachments,strSMTPServer,strSMTP_USER,strSMTP_PASS)
Set objShell = CreateObject("WScript.Shell")
objShell.Run """" & PATH_BLAT & """" & " -subject """ & strSubject & """ -body """ & strBody & """ -to " & strTo & " -f " & strFrom & " -server " & strSMTPServer & " -u """ & strSMTP_USER & """ -pw """ & strSMTP_PASS & """ -attach """ & strAttachments & """" ,0,True
set objShell = Nothing
End Function
Grüße Uwe
Zitat von @mcknife82:
wenn du mir sagst wie ich diesen quellcode hier reinbekomme dann stelle ich diesen hier zur verfügung.
Nutze Code-Tags für deinen Quellcode: wenn du mir sagst wie ich diesen quellcode hier reinbekomme dann stelle ich diesen hier zur verfügung.
<code> Quellcode </code>
FOLDER_PDF = "quelle"
PATH_BLAT = "pfad zu blat.exe"
'Nach dem Versenden pdf in den neu erstellten ordner verschieben
Dim objFSO, newDIR, neuName
'Eingabefenster für den neuen Ordner
neuName = InputBox("Bitte neuen Ordnernamen eingeben: PDF´s werden nach dem versenden in diesen dann Verschoben ")
if neuName = "" then WScript.Quit
ziel="pfad_zu_neuem_ordner\" & neuName
Set objFSO = CreateObject("Scripting.FileSystemObject")
if objFSO.Folderexists(ziel) = false then
Set newDIR = objFSO.CreateFolder(ziel)
end if
' Dictionary mit den Mailadressen und Kürzeln erstellen
Set oDic = CreateObject("scripting.dictionary")
oDic.Add "MM","maxmustermann@mailserver.de"
oDic.Add "SM","SabineMueller.de"
Set fso = CreateObject("Scripting.Filesystemobject")
For Each file In fso.GetFolder(FOLDER_PDF).Files
If LCase(fso.GetExtensionName(file.Path)) = "pdf" Then
'Kuerzel ermitteln
kuerzel = UCase(Mid(fso.GetBaseName(file.Path),5))
' Wenn Kürzel im Dictionary existiert dann sende Mail
If oDic.Exists(kuerzel) Then
strMail = oDic.Item(kuerzel)
sendNewMailViaBlat "sender@mail.de",strMail,"Neue PDFs eingetroffen","Im Anhang Ihre PDFs", file.Path,"smtp.mailserver.de","SMTP-USERNAME","SMTP-PASSWORD"
fso.MoveFile file.Path , newDIR & "\"
End If
End If
Next
Function sendNewMailViaBlat(strFrom,strTo,strSubject,strBody,strAttachments,strSMTPServer,strSMTP_USER,strSMTP_PASS)
Set objShell = CreateObject("WScript.Shell")
objShell.Run """" & PATH_BLAT & """" & " -subject """ & strSubject & """ -body """ & strBody & """ -to " & strTo & " -f " & strFrom & " -server " & strSMTPServer & " -u """ & strSMTP_USER & """ -pw """ & strSMTP_PASS & """ -attach """ & strAttachments & """" ,0,True
set objShell = Nothing
End Function
Hallo zusammen,
Ich bin in einem mittelständischen Unternehmen u. a. für die IT verantwortlich und bin auf der Suche nach einer Lösung für nachfolgend beschriebene Aufgabenstellung auf diesen Beitrag gestoßen und hoffe es wird mir verziehen, dass ich diesen nochmals aktiviere.
Unser System generiert bei Mengenänderungen einen Änderungsbeleg, der aktuell auf einen bestimmten Drucker bereitgestellt wird. Dieser Beleg soll jetzt in PDF-Form an einen def. Kreis per eMail versendet werden.
Lösungsansatz: Die Belege werden per PDF24PDF in einen Folder abgestellt. Pro Änderung/Artikel eine Datei!
Problem: Der Verteilerkreis erhält jetzt u.U. eine Mail mit vielen Einzeldateien die vom Dateinamen alle weitestgehend gleichlautend sind.
Änderung.pdf
Änderung(1).pdf
Änderung(2).pdf
….
Die aufgezeigte Lösung von Uwe (colinardo) trifft schon sehr gut die benötigte Lösung und würde soweit auch funktionieren.
Gesucht wird jetzt eine Möglichkeit mit der alle Einzeldateien in eine PDF-Datei zusammengeführt werden und dann als Einzeldatei per Mail an den Verteilerkreis gesendet wird. Die Einzeldateien können dann gelöscht werden. Dies hätte den Vorteil, dass die User innerhalb der Datei die Suchenfunktion verwendet könnten und nicht jedes PDF einzeln öffnen müssten.
Prima wäre, wenn die Datei nach dem versenden noch in einen Archiv-Ordner verschoben wird.
Nachdem ich leider keine Kenntnisse mit VBS habe, wäre es perfekt, wenn ich hier Unterstützung finden würde.
Vorab vielen Dank!
Jürgen
Ich bin in einem mittelständischen Unternehmen u. a. für die IT verantwortlich und bin auf der Suche nach einer Lösung für nachfolgend beschriebene Aufgabenstellung auf diesen Beitrag gestoßen und hoffe es wird mir verziehen, dass ich diesen nochmals aktiviere.
Unser System generiert bei Mengenänderungen einen Änderungsbeleg, der aktuell auf einen bestimmten Drucker bereitgestellt wird. Dieser Beleg soll jetzt in PDF-Form an einen def. Kreis per eMail versendet werden.
Lösungsansatz: Die Belege werden per PDF24PDF in einen Folder abgestellt. Pro Änderung/Artikel eine Datei!
Problem: Der Verteilerkreis erhält jetzt u.U. eine Mail mit vielen Einzeldateien die vom Dateinamen alle weitestgehend gleichlautend sind.
Änderung.pdf
Änderung(1).pdf
Änderung(2).pdf
….
Die aufgezeigte Lösung von Uwe (colinardo) trifft schon sehr gut die benötigte Lösung und würde soweit auch funktionieren.
Gesucht wird jetzt eine Möglichkeit mit der alle Einzeldateien in eine PDF-Datei zusammengeführt werden und dann als Einzeldatei per Mail an den Verteilerkreis gesendet wird. Die Einzeldateien können dann gelöscht werden. Dies hätte den Vorteil, dass die User innerhalb der Datei die Suchenfunktion verwendet könnten und nicht jedes PDF einzeln öffnen müssten.
Prima wäre, wenn die Datei nach dem versenden noch in einen Archiv-Ordner verschoben wird.
Nachdem ich leider keine Kenntnisse mit VBS habe, wäre es perfekt, wenn ich hier Unterstützung finden würde.
Vorab vielen Dank!
Jürgen
Hallo Jürgen,
kein Problem. Das Kombinieren der PDFs kannst du mit dem frei erhältlichen Kommandozeilentool PDFTK machen. Das lädst du dir herunter und gibst den Pfad zur pdftk.exe in Zeile 4 des Scripts an. Die Zeile die die Mail verschickt(29) musst du natürlich an deine Umgebung anpassen (SMTP-Server, Mailadressen etc)
Viel Spaß
Grüße Uwe
kein Problem. Das Kombinieren der PDFs kannst du mit dem frei erhältlichen Kommandozeilentool PDFTK machen. Das lädst du dir herunter und gibst den Pfad zur pdftk.exe in Zeile 4 des Scripts an. Die Zeile die die Mail verschickt(29) musst du natürlich an deine Umgebung anpassen (SMTP-Server, Mailadressen etc)
Kombiniere mehrere PDF-Dateien in eine, verschicke sie per Mail und lösche die einzelnen PDF-Dateien und Archiviere das kombinierte PDF.
Const FOLDER_PDF = "C:\temp\source\pdf"
Const FOLDER_MOVE = "C:\Temp\target"
Const PATH_BLAT = "D:\Blat\blat.exe"
Const PATH_PDFTK = "D:\pdftk\pdftk.exe" ' "https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit"
'Variablen
Dim intPDFCount
'Objekte
Set fso = CreateObject("Scripting.Filesystemobject")
Set objShell = CreateObject("Wscript.Shell")
'Prüfe ob PDF-Dateien im Ordner vorhanden sind
For Each file In fso.GetFolder(FOLDER_PDF).Files
If LCase(fso.GetExtensionName(file.Path)) = "pdf" Then
intPDFCount = intPDFCount + 1
End If
Next
'Wenn PDF Datein vorhanden ...
If intPDFCount > 0 Then
'Datum was an das kombinierte PDF angehangen wird
strDate = Year(Date) & Month(Date) & Day(Date) & "_" & Hour(Now) & Minute(Now) & Second(Now)
'Pfad für das kombinierte PDF
strPathPDFCombined = FOLDER_MOVE & "\Änderungen_" & strDate & ".pdf"
'kombiniere die PDF-Dateien in ein einzelnes PDF
objShell.Run """" & PATH_PDFTK & """ """ & FOLDER_PDF & "\*.pdf"" cat output """ & strPathPDFCombined & """", 0, True
'Mail via Blat verschicken
sendNewMailViaBlat "sender@mail.de","empfänger@mail.de","Änderungen","Im Anhang ist das PDF mit den Änderungen!",strPathPDFCombined,"smtp.mailserver.de","SMTP-USERNAME","SMTP-PASSWORD"
'Einzelne PDF-Dateien löschen
fso.DeleteFile FOLDER_PDF & "\*.pdf",True
End If
Function sendNewMailViaBlat(strFrom,strTo,strSubject,strBody,strAttachments,strSMTPServer,strSMTP_USER,strSMTP_PASS)
objShell.Run """" & PATH_BLAT & """" & " -subject """ & strSubject & """ -body """ & strBody & """ -to " & strTo & " -f " & strFrom & " -server " & strSMTPServer & " -u """ & strSMTP_USER & """ -pw """ & strSMTP_PASS & """ -attach """ & strAttachments & """" ,0,True
set objShell = Nothing
End Function
Grüße Uwe
Hallo Uwe,
für Deine superschnelle Reaktion herzlichen Dank! Habe Dein Script entsprechend um die notwendigen Daten ergänzt.
Die abgelegten Dateien im Ordner "Source" werden entfernt, tauchen jedoch nicht im Ordner "Target" auf. Auch erhalte ich noch keine Mail!
Gibt es eine Möglichkeit die einzelnen Schritte des Scriptes mitzuverfolgen?
Muss der Ordner "Folder_PDF" noch angelegt und der Pfad angegeben werden?
Vorab vielen Dank für Deine Unterstützung!!
Gruß
Jürgen
für Deine superschnelle Reaktion herzlichen Dank! Habe Dein Script entsprechend um die notwendigen Daten ergänzt.
Die abgelegten Dateien im Ordner "Source" werden entfernt, tauchen jedoch nicht im Ordner "Target" auf. Auch erhalte ich noch keine Mail!
Gibt es eine Möglichkeit die einzelnen Schritte des Scriptes mitzuverfolgen?
Muss der Ordner "Folder_PDF" noch angelegt und der Pfad angegeben werden?
Vorab vielen Dank für Deine Unterstützung!!
Gruß
Jürgen
Zitat von @ECHAJUE:
Die abgelegten Dateien im Ordner "Source" werden entfernt, tauchen jedoch nicht im Ordner "Target" auf.
Das kombinierte PDF wird direkt im Target-Ordner abgelegt !Die abgelegten Dateien im Ordner "Source" werden entfernt, tauchen jedoch nicht im Ordner "Target" auf.
Auch erhalte ich noch keine Mail!
Dann ist deine Anpassung des Mail-Zeile nicht korrekt an den Mailserver angepasst ... Hier läuft das Script einwandfrei...Gibt es eine Möglichkeit die einzelnen Schritte des Scriptes mitzuverfolgen?
Muss der Ordner "Folder_PDF" noch angelegt und der Pfad angegeben werden?
ja, das hatte ich jetzt nicht implementiert ..., wäre aber kein Problem wenn das gewünscht ist.Grüße Uwe
Hallo Uwe,
irgendwie komme ich nicht richtig weiter. Wenn ich die Sache jetzt richtig analysiert habe, scheint es daran zu liegen, dass kein kombiniertes PDF im Target ankommt. Jedenfalls wird dort nichts abgelegt. Script wird gestartet, die erzeugten PDFs im Source-Ordner verschwinden auch.
Wenn ich die Zusammführung der Einzeldokumente per *.bat über die pdftk.exe ausführe, klappt dies ohne Probleme. Auch über das von Dir in diesem Beitrag erstellte Srcript klappt das testweise Versenden per blat.exe ohne Probleme.
Nur in der Kombination gibt scheint es Probleme zu geben. Laut VBSEdit läuft Script fehlerfrei durch!!
Wäre prima, wenn Dir hierzu noch ein Lösungsansatz einfällt.
Vorab besten Dank und ein schönes Wochenende.
Gruß
Jürgen
irgendwie komme ich nicht richtig weiter. Wenn ich die Sache jetzt richtig analysiert habe, scheint es daran zu liegen, dass kein kombiniertes PDF im Target ankommt. Jedenfalls wird dort nichts abgelegt. Script wird gestartet, die erzeugten PDFs im Source-Ordner verschwinden auch.
Wenn ich die Zusammführung der Einzeldokumente per *.bat über die pdftk.exe ausführe, klappt dies ohne Probleme. Auch über das von Dir in diesem Beitrag erstellte Srcript klappt das testweise Versenden per blat.exe ohne Probleme.
Nur in der Kombination gibt scheint es Probleme zu geben. Laut VBSEdit läuft Script fehlerfrei durch!!
Wäre prima, wenn Dir hierzu noch ein Lösungsansatz einfällt.
Vorab besten Dank und ein schönes Wochenende.
Gruß
Jürgen
Hallo Jürgen,
ein Fehler der bei dir auftreten könnte wäre das generierte Datum für den Namen der kombinierten PDF-Datei ... habe Zeile 22 des Scripts mal universell angepasst. Vermutlich war dein Datum auf Englisch oder ein anderes Format mit Slashes eingestellt, die natürlich nicht in einem Dateinamen vorkommen dürfen, und deswegen das Erzeugen der PDF-Datei fehlgeschlagen ist.
Grüße Uwe
ein Fehler der bei dir auftreten könnte wäre das generierte Datum für den Namen der kombinierten PDF-Datei ... habe Zeile 22 des Scripts mal universell angepasst. Vermutlich war dein Datum auf Englisch oder ein anderes Format mit Slashes eingestellt, die natürlich nicht in einem Dateinamen vorkommen dürfen, und deswegen das Erzeugen der PDF-Datei fehlgeschlagen ist.
Grüße Uwe
Hallo Uwe,
leider immer noch das gleiche Verhalten. Die im Ordner Source befindlichen Einzel-PDFs verschwinden, jedoch kommt im Ordner Target nichts an.Weil dort kein zusammengefügtes PDF liegt findet ja vermutlich auch kein eMail-Versand statt! Richtig?
Fällt Dir sonst noch etwas ein? Bin für jeden Ansatz/Unterstützung dankbar!
Gruß
Jürgen
leider immer noch das gleiche Verhalten. Die im Ordner Source befindlichen Einzel-PDFs verschwinden, jedoch kommt im Ordner Target nichts an.Weil dort kein zusammengefügtes PDF liegt findet ja vermutlich auch kein eMail-Versand statt! Richtig?
Fällt Dir sonst noch etwas ein? Bin für jeden Ansatz/Unterstützung dankbar!
Gruß
Jürgen
sorry aber hier läuft es einwandfrei, du must bei deiner Anpassung irgendwo einen Fehler eingebaut haben (Bitte die Pfade ohne abschließenden Backslash angeben!)! Ich mach das ganze ja nicht zum ersten mal...
Oder eines deiner PDFs bereitet PDFTK Probleme ...
Bitte folgende Kommentare via Personal Message, damit der Thread hier nicht zugemüllt wird. Merci.
Oder eines deiner PDFs bereitet PDFTK Probleme ...
Bitte folgende Kommentare via Personal Message, damit der Thread hier nicht zugemüllt wird. Merci.
Hallo k.arkenau,
das wird dann ein Sonderzeichen-Problem bei der Parameterübergabe an die BLAT-Kommandozeile sein (Betreff oder Body), diese Zeichen müsstest du vorher escapen, durch einen replace.
http://www.robvanderwoude.com/escapechars.php
Grüße Uwe
das wird dann ein Sonderzeichen-Problem bei der Parameterübergabe an die BLAT-Kommandozeile sein (Betreff oder Body), diese Zeichen müsstest du vorher escapen, durch einen replace.
http://www.robvanderwoude.com/escapechars.php
Grüße Uwe
Eigentlich meckert er, soweit ich das überblicken kann, jedes "&" an:
Das kaufmännische Und-Zeichen (&) ist nicht zulässig. Der &-Operator ist für eine zukünftige Verwendung reserviert.
Verwenden Sie das kaufmännische Und-Zeichen in doppelten Anführungszeichen ("&"), um es als Teil einer Zeichenfolge z
übergeben.
Vorher sagt er mir noch das hier:
In C:\test\lieferscheine.ps1:7 Zeichen:4
In C:\test\lieferscheine.ps1:8 Zeichen:4
In C:\test\lieferscheine.ps1:9 Zeichen:5
In C:\test\lieferscheine.ps1:9 Zeichen:15
In C:\test\lieferscheine.ps1:9 Zeichen:14
In C:\test\lieferscheine.ps1:10 Zeichen:22
Mein Versionsstand ist:
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.34209
BuildVersion 6.3.9600.16406
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
Das kaufmännische Und-Zeichen (&) ist nicht zulässig. Der &-Operator ist für eine zukünftige Verwendung reserviert.
Verwenden Sie das kaufmännische Und-Zeichen in doppelten Anführungszeichen ("&"), um es als Teil einer Zeichenfolge z
übergeben.
Vorher sagt er mir noch das hier:
In C:\test\lieferscheine.ps1:7 Zeichen:4
For Each file In fso.GetFolder(FOLDER_PDF).Files
~
Öffnende "(" fehlt nach dem Schlüsselwort "for".In C:\test\lieferscheine.ps1:8 Zeichen:4
If LCase(fso.GetExtensionName(file.Path)) = "pdf" Then
~
"(" fehlt nach "If" in der "if"-Anweisung.In C:\test\lieferscheine.ps1:9 Zeichen:5
If strPDFs <> "" Then
~
"(" fehlt nach "If" in der "if"-Anweisung.In C:\test\lieferscheine.ps1:9 Zeichen:15
If strPDFs <> "" Then
~
Dateispezifikation nach dem Umleitungsoperator fehlt.In C:\test\lieferscheine.ps1:9 Zeichen:14
If strPDFs <> "" Then
~
Der Operator "<" ist für zukünftige Versionen reserviert.In C:\test\lieferscheine.ps1:10 Zeichen:22
strPDFs = strPDFs & ",""" & file.Path & """"
Mein Versionsstand ist:
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.34209
BuildVersion 6.3.9600.16406
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
Mein Versionsstand ist:
PSVersion 4.0
Och nö, du weißt aber schon das das ein VB-Script und kein Powershell ist ?! Steht eigentlich Fett über dem Script, und sollte man merken sobald man Variablen ohne Dollarzeichen sieht PSVersion 4.0
Ich verleihe dir hiermit das goldene Brett vorm Kopf (Man merkt, Pfingsten ist nicht mehr weit ...)
Grüße Uwe
Hi Uwe,
ich danke für die verdiente Auszeichnung....so blind kann man ja eigentlich nicht sein....aber wahrscheinlich zu sehr auf PowerShell eingeschossen...naja.
Auf jedenfall läuft es jetzt, schickt mir aber keine eMail.
Ich habe in der (hoffentlich) entsprechenden Zeile stehen:
sendNewMailViaBlat "verladung@online.de","k.arkenau@online.de","Neue PDFs eingetroffen","Im Anhang Ihre PDFs",strPDFs,"192.168.0.175","",""
Wobei 192.168.0.175 unser Mailserver ist und ohne Benutzernamen und Passwort erreichbar ist (habe ich schon an anderen Stellen so eingesetzt).
Hast Du noch eine Idee für mich?
Danke & schöne Grüße
k.arkenau
ich danke für die verdiente Auszeichnung....so blind kann man ja eigentlich nicht sein....aber wahrscheinlich zu sehr auf PowerShell eingeschossen...naja.
Auf jedenfall läuft es jetzt, schickt mir aber keine eMail.
Ich habe in der (hoffentlich) entsprechenden Zeile stehen:
sendNewMailViaBlat "verladung@online.de","k.arkenau@online.de","Neue PDFs eingetroffen","Im Anhang Ihre PDFs",strPDFs,"192.168.0.175","",""
Wobei 192.168.0.175 unser Mailserver ist und ohne Benutzernamen und Passwort erreichbar ist (habe ich schon an anderen Stellen so eingesetzt).
Hast Du noch eine Idee für mich?
Danke & schöne Grüße
k.arkenau
Hast Du noch eine Idee für mich?
Ja, die Funktion zum Mail Versenden anpassen und die Parameter für Username und Passwort weglassen objShell.Run """" & PATH_BLAT & """" & " -subject """ & strSubject & """ -body """ & strBody & """ -to " & strTo & " -f " & strFrom & " -server " & strSMTPServer & " -attach """ & strAttachments & """" ,0,True
Hab Sie jetzt so angepasst:
objShell.Run """" & PATH_BLAT & """" & " -test""" & strSubject & """ -test""" & strBody & """ -k.arkenau8@online.de" & strTo & " -f " & strFrom & " -192.168.0.175l" & strSMTPServer & " -*.pdf""" & strAttachments & """" ,0,True
Aber es gibt ein gemecker, das ein Objekt in Zeile 17, Zeichen 2 ein Objekt erforderlich sei. Was kann das sein?
objShell.Run """" & PATH_BLAT & """" & " -test""" & strSubject & """ -test""" & strBody & """ -k.arkenau8@online.de" & strTo & " -f " & strFrom & " -192.168.0.175l" & strSMTPServer & " -*.pdf""" & strAttachments & """" ,0,True
Aber es gibt ein gemecker, das ein Objekt in Zeile 17, Zeichen 2 ein Objekt erforderlich sei. Was kann das sein?
Zitat von @k.arkenau:
Hab Sie jetzt so angepasst:
Aber es gibt ein gemecker, das ein Objekt in Zeile 17, Zeichen 2 ein Objekt erforderlich sei. Was kann das sein?
Och nö das geht so natürlich nicht ..., schau dir bitte meinen Code vom letzten Post an ...Hab Sie jetzt so angepasst:
Aber es gibt ein gemecker, das ein Objekt in Zeile 17, Zeichen 2 ein Objekt erforderlich sei. Was kann das sein?
Bei weiteren Fragen bitte per PM, damit hier die beteiligten User nicht weiter belästigt werden. Danke.
Grüße Uwe