Nach neuen Dateien im Ordner suchen und per Mail versenden
Hallo zusammen
Mein Anliegen sieht folgender massen aus.
Immer ende Monat erstellt mir ein Program eine PDF-Datei in ein Ordner. Die Dateinamen werden immer am Anfang mit dem Jahr und dem Monat generiert. z.B. (2012-06-asldkfjasldkf)
Jetzt bin ich nicht immer erreichbar und möchte mir diese per Mail senden.
Kann man eine Batch-Datei erstellen, welches mir abruft ob eine neue Datei erstellt wurde und mir diese gleich per Mail weiterleitet?
Gruss PaceLu
Mein Anliegen sieht folgender massen aus.
Immer ende Monat erstellt mir ein Program eine PDF-Datei in ein Ordner. Die Dateinamen werden immer am Anfang mit dem Jahr und dem Monat generiert. z.B. (2012-06-asldkfjasldkf)
Jetzt bin ich nicht immer erreichbar und möchte mir diese per Mail senden.
Kann man eine Batch-Datei erstellen, welches mir abruft ob eine neue Datei erstellt wurde und mir diese gleich per Mail weiterleitet?
Gruss PaceLu
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 187381
Url: https://administrator.de/forum/nach-neuen-dateien-im-ordner-suchen-und-per-mail-versenden-187381.html
Ausgedruckt am: 23.12.2024 um 07:12 Uhr
3 Kommentare
Neuester Kommentar
Hi,
habe hier keine Lösung mit Batch, aber mit einem VB-Script. Dieses Script sollte dir, wenn heute die Datei erstellt würde, die Datei morgen per Mail zuschicken.
Konnte es hier nicht testen, deshalb ohne Gewähr. Bin nicht der Profi in Sachen VBS
Grüße
Mirko
habe hier keine Lösung mit Batch, aber mit einem VB-Script. Dieses Script sollte dir, wenn heute die Datei erstellt würde, die Datei morgen per Mail zuschicken.
Konnte es hier nicht testen, deshalb ohne Gewähr. Bin nicht der Profi in Sachen VBS
Dim intTage
'Pfad in dem die Datei liegt?
Mailversand "C:\xxx\"
Function Mailversand(strDir)
Set objFSO = CreateObject("scripting.filesystemobject")
Set objFolder = objFSO.GetFolder(strDir)
'Wie alt darf die Datei sein?
intTage = 1
For Each tmpFile In objFolder.files
If DateDiff("d", tmpfile.DateLastModified, now) > intTage Then
Set objMessage = CreateObject("CDO.Message")
'Betreff-Zeile
objMessage.Subject = "Test"
'Absender
objMessage.From = """Absender"" <Absender@domain.de>"
'E-Mail-Adr. des Empängers
objMessage.To = "empfänger@domain.de"
'CC E-Mail-Adr.
objMessage.CC = ""
'BCC E-Mail-Adr.
objMessage.BCC = ""
'Mailtext
objMessage.TextBody = "test"
'Datei die angehängt werden soll
objMessage.AddAttachment "c:\voller\Pfad\zur\Datei\" & tmpfile
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'Name oder IP des SMTP-Servers
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.domain.de"
'Serverport (Standart 25)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'Username und Passwort (Falls nicht benötigt, einfach entfernen oder auskommentieren)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "absender@domain.de"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Passwort"
'SSL für die Verbindung benutzen? (True/False)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
objMessage.Configuration.Fields.Update
objMessage.Send
End If
Next
End Function
Grüße
Mirko
Nochmal ich... habe gerade meinen eigenen Denkfehler entdeckt...
Deshalb eine Frage... liegen in dem Verzeichnis dann auch noch die alten Dateien?
Falls dies der Fall ist, dann würdest du jetzt für jede Datei die älter als einen Tag ist eine Mail bekommen.
Grüße
Mirko
Edit:
Hier das Script, dass nur Dateie berücksichtigt die mindestens einen Tag und maximal fünf Tage alt sind.
Aber wie gesagt, OHNE GEWÄHR xD
Deshalb eine Frage... liegen in dem Verzeichnis dann auch noch die alten Dateien?
Falls dies der Fall ist, dann würdest du jetzt für jede Datei die älter als einen Tag ist eine Mail bekommen.
Grüße
Mirko
Edit:
Hier das Script, dass nur Dateie berücksichtigt die mindestens einen Tag und maximal fünf Tage alt sind.
Aber wie gesagt, OHNE GEWÄHR xD
Dim intTageMin
Dim intTageMax
'Pfad in dem die Datei liegt?
Mailversand "C:\xxx\"
Function Mailversand(strDir)
Set objFSO = CreateObject("scripting.filesystemobject")
Set objFolder = objFSO.GetFolder(strDir)
'Wie alt muss/darf die Datei sein?
intTageMin = 1
intTageMax = 5
For Each tmpFile In objFolder.files
If DateDiff("d", tmpfile.DateLastModified, now) > intTageMin AND DateDiff("d", tmpfile.DateLastModified, now) < intTageMax Then
Set objMessage = CreateObject("CDO.Message")
'Betreff-Zeile
objMessage.Subject = "Test"
'Absender
objMessage.From = """Absender"" <Absender@domain.de>"
'E-Mail-Adr. des Empängers
objMessage.To = "empfänger@domain.de"
'CC E-Mail-Adr.
objMessage.CC = ""
'BCC E-Mail-Adr.
objMessage.BCC = ""
'Mailtext
objMessage.TextBody = "test"
'Datei die angehängt werden soll
objMessage.AddAttachment "c:\voller\Pfad\zur\Datei\" & tmpfile
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'Name oder IP des SMTP-Servers
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.domain.de"
'Serverport (Standart 25)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'Username und Passwort (Falls nicht benötigt, einfach entfernen oder auskommentieren)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "absender@domain.de"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Passwort"
'SSL für die Verbindung benutzen? (True/False)
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
objMessage.Configuration.Fields.Update
objMessage.Send
End If
Next
End Function