pacelu
Goto Top

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

Content-ID: 187381

Url: https://administrator.de/contentid/187381

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

nubbeldupp
nubbeldupp 03.07.2012 um 10:10:04 Uhr
Goto Top
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 face-smile


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
nubbeldupp
nubbeldupp 03.07.2012 aktualisiert um 10:31:14 Uhr
Goto Top
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

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
PaceLu
PaceLu 03.07.2012 um 10:58:55 Uhr
Goto Top
Danke dir viel mals.

Es hat wunderbar funktionert.