donkuba

Automatischer PDF Versand per Mail aus dem Explorer bzw. Ordner

Hallo und Moin.

ich muss regelmäßig E-Mails mit PDF's an bestimmte E-Mail Adressen versenden und anschließend sollen die PDF's in bestimmte Ordner verschoben werden. Dies Manuell zu machen ist sehr aufwändig und kostet viel Zeit. Es sind ca. 100 PDF's pro Tag.
Ich habe schon Google bemüht und bin auch fündig geworden. Ich habe über mehrere .vbs Skripts geschafft das die E-Mails versendet werden. So sieht das Skript aus:

'-------------------------  
'Ordner in dem die PDF Dateien liegen  
FOLDER_PDF = "ORDNER"  
' Ordner in dem Unterordner mit Datum erstellt werden und die PDFs dort rein verschoben werden  
FOLDER_MOVE = "ORDNER"  
'Pfad zur BLAT.exe  
PATH_BLAT = "C:\Windows\System32\blat.exe"  
' Mailserverdaten:  
SMTP_SENDER = ""  
SMTP_CC = ""  
SMTP_SERVER = ""  
SMTP_USERNAME = ""  
SMTP_PASSWORD = ""  
' -------------------------  

Set fso = WScript.CreateObject("Scripting.Filesystemobject")  
For Each file In fso.GetFolder(FOLDER_PDF).Files
	If LCase(fso.GetExtensionName(file.Path)) = "pdf" Then  
		sendNewMailViaBlat SMTP_SENDER,SMTP_CC,"MAIL","PDF eingetroffen","PDF im Anhang",file.Path,SMTP_SERVER,SMTP_USERNAME,SMTP_PASSWORD  
		fso.MoveFile file.Path , FOLDER_MOVE & "\"  
		wscript.sleep 6000
	End If
Next
		
Function sendNewMailViaBlat(strFrom,strTo,strCC,strSubject,strBody,strAttachments,strSMTPServer,strSMTP_USER,strSMTP_PASS)
    Set objShell = CreateObject("WScript.Shell")  
    objShell.Run """" & PATH_BLAT & """" & " -subject """ & strSubject & """ -body """ & strBody & """ -to " & strTo & " -cc " & strCC & " -f " & strFrom & " -server " & strSMTPServer & " -u """ & strSMTP_USER & """ -pw """ & strSMTP_PASS & """ -attach """ & strAttachments & """" ,0,True  
    set objShell = Nothing
End Function


Leider ist das Problem bei diesem Skript, das ich es manuell starten muss. Aufgabenplaner reagiert einfach nicht, auch nicht wenn ich die vbs Skripte in eine .bat Datei lege und zusammenstarten lassen will. Durch das manuelle Starten kommt es dazu das er nur einen Teil der Mails rausschickt (pro Mail wird nur ein PDF versendet). Meist kommt nur 1/3 der PDF's an. Ebenfalls kann das Skript kein HTTPS versandt ermöglichen.

Nun habe ich etwas weiter gegoogelt und habe ein Skript mit AutoIt gefunden. Das Skript passt nicht ganz zu meiner Idee. Leider kann ich nur googlen, nicht Programmieren.

Somit wäre ich über eure Hilfe dankbar.
Ich benötige ein Skript, gern über AutoIT (da der automatische Ablauf hier klappen sollte) welches regelmäßig einen oder mehrere Ordner überwacht und bei Ablage von PDF's diese per Mail versendet. die PDF's werden in unterschiedliche Ordner abgelegt. Je nach Ordner wird die PDF an eine andere E-Mail-Adresse versandt und in einen anderen Ordner kopiert.
Bedingungen:
  • Absender: immer die gleiche Mail
  • CC Kontroll-E-Mail: immer die gleiche Mail
  • Anzahl der PDF pro Mail: maximal 20 PDF's
  • Maximal MB pro Mail: maximal 20MB
  • Empfänger: wechselt, je nach dem aus welchem Ordner gesendet werden soll
  • Betreff: wechselt, je nach dem aus welchem Ordner gesendet werden soll
  • Ordner in den die PDF liegen: Unterschiedliche Ordner
  • PDF verschieben: wechselt, je nach dem aus welchem Ordner gesendet werden soll
  • SMTP Protokoll: gern über HTTPS

Des Weiteren habe ich zwei Ordner in den PDF's abgelegt werden die dann ohne Mail versandt einfach in bestimmte Ordner verschoben werden sollen. Ich hatte leider vergebens versucht das obige Skript abzuändern.

Vielleicht kann mir der ein oder andere weiterhelfen. Ich wäre euch super dankbar dafür.

Mit freundlichem Gruß
Clemens
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 1192873152

Url: https://administrator.de/forum/automatischer-pdf-versand-per-mail-aus-dem-explorer-bzw-ordner-1192873152.html

Ausgedruckt am: 07.05.2025 um 00:05 Uhr

TomTomBon
TomTomBon 25.08.2021 um 16:36:31 Uhr
Goto Top
Moin Moin

vor mehreren Jahren hat so etwas ähnliches ein Kollege mit PowerShell gelöst.
Er hat ein Skript geschrieben das über Scheduler gestartet wurde.

Das hat einen Ordner untersucht mit Powershell (Aufruf alle x minuten).
Dann hat er Outlook des aktuellen Kontos genommen als Vehikel, eine Mail mit festem Empfänger erstellt und die Daten versendet.
Dies alles im Hintergrund, der Benutzer hatte nur die Mail in gesendet.

Man kann sehr gut (zB mit Robocopy) Ordner durchsuchen lassen und die Daten in einen entsprechenden Ordner kopieren / verschieben.
Und dann mit Powershell zippen.
powershell.exe Compress-Archive -DestinationPath "ZIEL-Ort\Name.zip" -Path "Herkunft" -Update -CompressionLevel Optimal -Verbose  
TomTomBon
TomTomBon 25.08.2021 um 16:47:36 Uhr
Goto Top
Ich habe es noch einmal gelesen.
Ich würde konkret folgendes machen:
  • Über den Scheduler einen Robocopy auftrag starten der Dauerhaft alle x Minuten die PDF aus dem Ursprung durchsucht und in Ziel 1 die verschiebt.
  • Sind die Daten in Ziel 1 sollte das nächste Skript alle x+2minuten die enthaltenen PDF in Ziel1-Send Ordner zippen (ALS CMD MACHEN ! ) und anschließend verschieben in Ziel1-ENDE
  • Dann mit dem Powershell Mail die zip verschicken und anschließend löschen

Dies sollte man dann so oft machen wie man unterschiedliche Mail Ziele bzw Daten Inhalte hat.
Also alles nach
Ziel1
Ziel2
...
erst verschieben.

Dann nach
Ziel1-Send
Zippen

Direkt nach dem zippen verschieben nach
Ziel1-Ende

Und das dann parallel / zeitlich versetzt für
Ziel2
...
DonKuba
DonKuba 25.08.2021 um 21:47:18 Uhr
Goto Top
Moin TomTomBon,

danke für deine Antwort. Ich verstehe was du meinst, nur in der Umsetzung scheitert es bei mir.
Dazu kommt das ich keine Zip Komprimierung benötige. Meine Daten sollen an eine Mail + Kontrollmail versandt werden und danach in einen Scaninput Ordner verschoben werden, damit sie in ein Datenverwaltungsprogramm aufgenommen werden können. Auch die Mails die versendet werden dürfen keine Zip's enthalten.

Es gibt ein Tool, Automation Workshop, welches sowas ermöglicht. Doch leider sind 1500 Dollar zu viel.
TomTomBon
TomTomBon 26.08.2021 um 08:43:31 Uhr
Goto Top
Zippen hätte den Vorteil das es 1 Datei ist die weg gesendet wird.

Wenn nicht erlaubt ist es so das es nicht implementiert wird.

Ich habe mal gegoogelt nach:
powershell script send mails

Die Antworten sahen nett aus:
https://www.windowspro.de/script/send-mailmessage-e-mails-versenden-powe ...
http://woshub.com/send-mailmessage-sending-emails-powershell/
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

Da PS sehr mächtig ist gibt es mehrere Hürden.
Die sollten genommen werden.

Zum Testen, bzw für Diagnose zwecke, gehe Ich den Umweg über die CMD.
Dort kann Ich natürlich dann nicht echte Scripte schreiben.
Beherrsche Ich auch noch nicht in PS face-smile
Aber 1-zeiler kann man ausführen lassen mit vorangestelltem powershell.exe.